<script src="foobar.js" /> <!-- self-closing script element -->
仅被识别:
<script src="foobar.js"></script>
可以
注意:此声明至少对于所有IE(6-8 beta 2)都是正确的。
#1 楼
XHTML 1规范说:С.3。元素最小化和元素内容为空
如果元素的空实例的内容模型不是
EMPTY
(例如,空标题或段落),则不要使用最小化形式(例如,使用<p> </p>
而非<p />
)。XHTML DTD将脚本元素指定为:
<!-- script statements, which may include CDATA sections -->
<!ELEMENT script (#PCDATA)>
评论
不过,“请勿”与“不得”相同。这是准则(出于兼容性的考虑,如本节标题所建议),而不是规则。
–康拉德·鲁道夫(Konrad Rudolph)
08/09/16在13:11
实际上,对于此限制,我找不到任何用处:)似乎完全是人为的。
–小队
08年9月16日在13:17
olavk给出了正确的答案。 XHTML 1.0的附录C并不是事物按原样进行的原因,而只是如何按原样进行工作。
– hsivonen
08-10-9在14:36
它不是规范的规范部分。这只是有关如何处理不支持XHTML的浏览器的附录
–内核
08-10-15在20:43
的问题不是规范禁止使用它,而是如果内容类型不是application / xhtml + xml,浏览器不会将其解释为“ non-tag-soup”。请参阅:stackoverflow.com/questions/348736/…@shabunc:浏览器可能似乎理解它,但实际上发生的是将内容放在段落内的之后,这是因为将squadette的引号解释为自是非空的,它不能自动关闭。在XHTML 1.1中,它可以是自动关闭的。
–乔
11年7月28日在21:07
#2 楼
要补充Brad和squadette所说的话,自动关闭的XML语法<script />
实际上是正确的XML,但是要使其在实践中起作用,您的Web服务器还需要将文档作为格式正确的XML发送,并带有XML模仿类型,例如application/xhtml+xml
。 HTTP Content-Type标头(而不是text/html
)。但是,发送XML模仿类型将导致IE7无法解析您的页面,IE7只喜欢
text/html
。来自w3:
总之,'application / xhtml + xml'
应该用于XHTML Family文档,并且使用'text / html “
应限于与HTML兼容的XHTML 1.0文档。也可以使用'application / xml'
和'text / xml',但是
在适当的情况下,
应该使用'application / xhtml + xml'
而不是那些通用的XML媒体类型。几个月前,我对此感到困惑,并且唯一可行的(与FF3 +和IE7兼容)解决方案是使用旧的
<script></script>
语法和text/html
(HTML语法+ HTML mimetype)。如果您的服务器在其HTTP标头中发送
text/html
类型,即使格式正确的XHTML文档,FF3 +仍将使用其HTML呈现方式,这意味着<script />
无法正常工作(这是一个更改,Firefox以前不太严格)。不管是否对
http-equiv
元元素,文档中的XML Prolog或doctype有任何摆弄,这种情况都会发生-Firefox在获取text/html
后会分支标头,它确定HTML或XML解析器是否在文档内部查找,并且HTML解析器不理解<script />
。评论
然后得出结论,如果您放弃对IE7的支持,发送text / xml将获得广泛的浏览器对的支持,是否正确?
–克里斯·莫斯基尼(Chris Moschini)
13年4月10日在8:15
因此,简而言之,仅在页面的MIME类型为xhtml / xml时才有效。对于常规的text / html页面,它将不起作用。并且,如果我们尝试使用“ xhtml / xml” MIME类型,则会破坏IE的兼容性。总而言之,保持冷静并使用
评论
适用于Chrome和OperaChrome的某些最新版本似乎已破坏了此功能,自关闭脚本标记在Chrome中不再起作用
不只是脚本标签。我也不相信自动关闭div标签也可以。
截至2011年7月,Chrome和Firefox出现此问题。 “这不是错误,而是功能”-真烦人。
两天后问到了更通用的版本:stackoverflow.com/questions/97522/…