Search code examples
htmlxhtmlweb-standards

noscript alternative in XHTML?


In HTML I could do:

<noscript><link href="css/stylenojs.css" rel="stylesheet" type="text/css" /></noscript>

Is there some compliant way to do so in XHTML Transitional or Strict documents?


Solution

  • The example you give is invalid in HTML as well as XHTML. No current recommendation provides a way to include a stylesheet unless scripting is enabled.

    In general, you should avoid <noscript>. Start with something that works, and then build on it.

    In this case, you could write your stylesheet for non-JS clients, then:

    <body>
    <script type="text/javascript">document.body.className += ' js';</script>
    

    … and include additional rule-sets specific to JS being enabled with:

    body.js foo {
    }
    

    Alternatively, you could do something like:

    <link href="css/stylenojs.css" rel="stylesheet" type="text/css" id="nojscss" />
    

    and

    var nojscss = document.getElementById('nojscss');
    nojscss.parentNode.removeChild(nojscss);