XHTML中的noscript替代方案是什么?

5

在HTML中,我可以这样做:

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

在XHTML Transitional或Strict文档中,有没有一种合规的方法来实现这一点?

相关问题:https://stackoverflow.com/questions/17829671/is-it-wise-to-use-the-noscript-tag-for-tracking-visitors-who-have-javascript-dis - Hawken
2个回答

4
你提供的示例在 HTML 和 XHTML 中都是无效的。目前没有任何建议提供一种在未启用脚本的情况下包含样式表的方法。
通常,应该避免使用 <noscript>。先从能够工作的东西开始,然后再 在此基础上构建。 在这种情况下,你可以为非 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
实际上,Richard所编写的是有效的HTML5代码,因为既可以使用no script标签也可以使用自闭合标签。但是,即使是XHTML5也不允许使用<noscript>标签。这个限制意味着如果你想以优雅且有效的方式完成某些事情,你必须在页面加载时执行JavaScript(这也不是理想的选择)。 - Iain Collins

0

当前所选答案是具有误导性的。

<noscript>与问题中提供的示例一样,HTML合法

W3C表示

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

现在,关于XHTML的小秘密是,除非文档以application/xhtml+xml作为MIME类型提供,否则浏览器不会将XHTML作为XML处理。

如果您的页面以正确的XHTML格式提供,则解决方案可能是将页面的doctype更改为HTML5,并将MIME类型更改为text/html。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接