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 中均无效。目前没有任何建议提供包含样式表的方法除非启用脚本。

一般来说,您应该避免使用&lt;noscript&gt;。从可行的东西开始,然后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】:

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

&lt;noscript&gt; 是 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 替代方案?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中的图像下方添加 noscript 标签?

前端之JavaScript面向对象开发

前端之JavaScript面向对象开发

presentViewController:animated:NO 简要显示 iOS 8 中的呈现控制器。替代方案?

Xhtml中的跨域请求

可见性的替代方案:折叠不适用于 IE 和 Chrome