XHTML 中的 noscript 替代方案?
Posted
技术标签:
【中文标题】XHTML 中的 noscript 替代方案?【英文标题】:noscript alternative in XHTML? 【发布时间】:2011-06-21 14:52:44 【问题描述】:在 html 中我可以这样做:
<noscript><link href="css/stylenojs.css" rel="stylesheet" type="text/css" /></noscript>
在 XHTML Transitional 或 Strict 文档中是否有一些合规的方法可以做到这一点?
【问题讨论】:
相关问题:***.com/questions/17829671/… 【参考方案1】:您给出的示例在 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);
【讨论】:
实际上,Richard 写的是有效的 HTML5,因为没有脚本和自结束标签都可以,但是是的,即使 XHTML5 也不允许 【参考方案2】:当前选择的答案具有误导性。
<noscript>
是 HTML valid 以及问题中提供的示例。
W3C says:
noscript 元素只在 HTML 语法中有效,它没有 XHTML 语法中的效果。这是因为它的工作方式是 基本上在启用脚本时“关闭”解析器,这样 元素的内容被视为纯文本而不是真实的 元素。 XML 没有定义执行此操作的机制。
现在,关于 XHTML 的小 dirty secret 是浏览器不会在 XML 中处理 XHTML,除非文档在 application/xhtml+xml
中作为 MIME 类型提供。
如果您的页面以正确的XHTML
提供,那么解决方案可能是将页面的doctype
更改为HTML5 并将MIME 类型更改为text/html
。
【讨论】:
以上是关于XHTML 中的 noscript 替代方案?的主要内容,如果未能解决你的问题,请参考以下文章