在HTML中,我可以这样做:
<noscript><link href="css/stylenojs.css" rel="stylesheet" type="text/css" /></noscript>
在XHTML Transitional或Strict文档中是否有一些符合标准的方法?
答案 0 :(得分:3)
您提供的示例在HTML和XHTML中无效。除非启用了脚本,否则当前建议不提供包含样式表的方法。
一般来说,你应该避免<noscript>
。从有用的东西开始,然后build on it.
在这种情况下,您可以为非JS客户编写样式表,然后:
<body>
<script type="text/javascript">document.body.className += ' js';</script>
...并包含特定于JS的其他规则集:
body.js foo {
}
或者,您可以执行以下操作:
<link href="css/stylenojs.css" rel="stylesheet" type="text/css" id="nojscss" />
和
var nojscss = document.getElementById('nojscss');
nojscss.parentNode.removeChild(nojscss);
答案 1 :(得分:1)
目前选择的答案具有误导性。
<noscript>
是HTML valid以及问题中提供的示例。
noscript元素仅在HTML语法中有效,它没有 XHTML语法中的效果。这是因为它的工作方式是 基本上&#34;关闭&#34;启用脚本时的解析器,以便 元素的内容被视为纯文本而不是真实的 元素。 XML没有定义执行此操作的机制。
现在,关于XHTML的小dirty secret是浏览器不处理XML中的XHTML,除非文档在application/xhtml+xml
中作为MIME类型提供。
如果您的网页是正确的XHTML
,那么解决方案可能是将网页的doctype
更改为HTML5,将MIME类型更改为text/html
。