为什么自我关闭的脚本元素不起作用?

浏览器不能正确识别的原因是什么。

<script src="foobar.js" /> <!-- self-closing script element -->

只有这个能被识别。

<script src="foobar.js"></script>

这是否打破了XHTML支持的概念?

注意:这个说法至少对所有的IE(6-8 beta 2)来说是正确的。

解决办法

XHTML 1规范说。

[С.3. 元素最小化和空元素内容] (http://www.w3.org/TR/xhtml1/#C_3)

给出一个内容模型不是EMPTY的元素的空实例(例如,一个空的标题或段落),不要使用最小化的形式(例如,使用<p> </p>,而不是<p />)。

XHTML DTD将脚本元素规定为。


评论(10)

Internet Explorer 8和更早的版本不支持XHTML解析。即使你使用了XML声明和/或XHTML doctype,旧的IE仍然将文档解析为普通的HTML。而在普通的HTML中,不支持自我封闭的语法。后面的斜线会被忽略,你必须使用一个明确的关闭标签。

即使是支持XHTML解析的浏览器,如IE 9及以后的版本,也仍然会把文档解析为HTML,除非你用XML内容类型来提供文档。但在这种情况下,老的IE根本不会显示该文档!

评论(3)

与XML和XHTML不同,HTML不知道自闭的语法。 把XHTML解释为HTML的浏览器不知道/字符表示标签应该是自闭的;相反,它们把它解释为一个空属性,解析器仍然认为标签是'开放的'。

正如<script defer>被视为<script defer="defer">一样,<script />被视为<script /="/">。

评论(3)