XHTML中的noscript替代品?

时间:2011-02-04 20:36:35

标签: html xhtml web-standards

在HTML中,我可以这样做:

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

在XHTML Transitional或Strict文档中是否有一些符合标准的方法?

2 个答案:

答案 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以及问题中提供的示例。

W3C says

  

noscript元素仅在HTML语法中有效,它没有   XHTML语法中的效果。这是因为它的工作方式是   基本上&#34;关闭&#34;启用脚本时的解析器,以便   元素的内容被视为纯文本而不是真实的   元素。 XML没有定义执行此操作的机制。

现在,关于XHTML的小dirty secret是浏览器不处理XML中的XHTML,除非文档在application/xhtml+xml中作为MIME类型提供。

如果您的网页是正确的XHTML,那么解决方案可能是将网页的doctype更改为HTML5,将MIME类型更改为text/html