浏览器无法正确识别的原因是什么:
<script src="foobar.js" /> <!-- self-closing script element -->
只有这是公认的:
<script src="foobar.js"></script>
这是否打破了XHTML支持的概念?
注意:此声明至少对于所有IE(6-8 beta 2)都是正确的。
浏览器无法正确识别的原因是什么:
<script src="foobar.js" /> <!-- self-closing script element -->
只有这是公认的:
<script src="foobar.js"></script>
这是否打破了XHTML支持的概念?
注意:此声明至少对于所有IE(6-8 beta 2)都是正确的。
简而言之,现代的答案是因为该标记以这种方式表示为强制性的
标签省略无,开始标签和结束标签都是必需的。
https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/script
与XML和XHTML不同,HTML不了解自动关闭语法。将XHTML解释为HTML的浏览器不知道该/
字符表明该标签应该是自动关闭的。取而代之的是,他们将其解释为空属性,而解析器仍然认为标记为“打开”。
正如<script defer>
被视为<script defer="defer">
,<script />
被视为<script /="/">
。
自动关闭脚本标签将不起作用,因为脚本标签可以包含内联代码,并且HTML不够灵巧,无法根据属性的存在打开或关闭该功能。
另一方面,HTML确实具有出色的标记,可以包含对外部资源的引用:
<link>
标记,它可以是自动关闭的。它已经包括样式表,RSS和Atom提要,规范URI以及各种其他功能。为什么不使用JavaScript?
如果您希望脚本标签是自封闭的,则不能像我所说的那样做,但是有一种替代方法,尽管不是明智的选择。您可以使用自行关闭链接标记,并通过将其指定为文本/ JavaScript和rel作为脚本的类型来链接至JavaScript,如下所示:
<link type="text/javascript" rel ="script" href="/path/tp/javascript" />
上面的人已经很好地解释了这个问题,但是可能使事情变得清楚的一件事是,尽管人们<br/>
一直在HTML文档中使用诸如此类的内容,但/
基本上处于这种位置的任何内容都将被忽略,并且仅在试图使可以解析为XML和HTML的东西。<p/>foo</p>
例如,尝试,您将获得一个普通段落。
Internet Explorer 8和更早版本不支持XHTML解析。即使您使用XML声明和/或XHTML文档类型,旧版IE仍会将文档解析为纯HTML。在纯HTML中,不支持自动关闭语法。尾部的斜杠只是被忽略,您必须使用显式的结束标记。
即使支持XHTML解析的浏览器(例如IE 9和更高版本)仍将文档解析为HTML,除非您使用XML内容类型提供文档。但是在那种情况下,旧的IE根本不会显示文档!
万一有人好奇,最终的原因是HTML最初是SGML的方言,SGML是XML的怪异哥哥。在SGML域中,可以在DTD中将元素指定为自动关闭(例如BR,HR,INPUT),隐式关闭(例如P,LI,TD)或显式关闭(例如TABLE,DIV,SCRIPT)。XML当然没有这个概念。
尽管现代的浏览器的解析模型不再是纯粹的SGML,但现代浏览器所使用的标记汤解析器却是从此继承而来的。当然,除非您使用XML MIME类型发送它,否则您精心设计的XHTML将被视为编写不良的SGML风格的标记汤。这也是为什么...
<p><div>hello</div></p>
...被浏览器解释为:
<p></p><div>hello</div><p></p>
...这是一个可爱的,难以理解的错误的配方,当您尝试对DOM进行编码时,该错误会使您陷入困境。
XHTML 1规范说:
给定一个其内容模型不是元素的空实例
EMPTY
(例如,空的标题或段落),请不要使用最小化形式(例如use<p> </p>
和not<p />
)。
XHTML DTD将脚本元素指定为:
<!-- script statements, which may include CDATA sections -->
<!ELEMENT script (#PCDATA)>
Internet Explorer 8和更早版本不支持XHTML的正确MIME类型
application/xhtml+xml
。如果您以XHTML的形式提供服务text/html
,而这些Internet Explorer的较早版本必须执行任何操作,则它将被解释为HTML 4.01。您只能对任何允许省略结束标记的元素使用简短语法。请参阅HTML 4.01规范。XML“简短形式”被解释为名为/的属性,该属性(因为没有等号)被解释为具有隐式值“ /”。在HTML 4.01中,这是完全错误的-不允许使用未声明的属性-但浏览器将忽略它。
IE9和更高版本支持随XHTML 5一起提供
application/xhtml+xml
。