经过一个小时的狩猎和啄食之后,我觉得我可能会为世界贡献一个可怕的事实,那就是你的javascript无法在IE中工作的唯一原因是因为你认为你可以拉快速在它上面使用你喜欢的xHTML快捷方式。
I've read the dtd我真的找不到任何依赖IE的依据。
答案 0 :(得分:8)
你没有使用xhtml,你正在使用html,并且html不支持xml的自闭标签语法 - 在html中使用自闭标签语法会导致属性'/'出现在元素,而不是关闭标签。
现在,根据<script>
标记的上下文,浏览器通常会对此进行更正,因此您实际上依赖于浏览器自动更正来使一切正常工作。
答案 1 :(得分:5)
IE是唯一需要&lt; script&gt;&lt; / script&gt;的网络浏览器并讨厌&lt; script /&gt;?
不,当作为text / html提供XHTML时,所有当前浏览器的行为都相同。浏览器之间只有区别,除非您正在嗅探IE并向其他浏览器发送不同的Content-Type。 (最重要的提示:不要这样做。没有什么可以获得的,并且有很多奇怪的东西被人咬伤。)
HTML元素浏览器并没有将空元素语法理解为任何特殊内容,它只是用来描述HTML的未闭合元素和XHTML的空元素之间的裂缝。所以你不能用一个作为“捷径”;空元素只能和必须用于空元素,如XHTML Appendix C指南中所述。
您可以简单地验证这一点:
<p style="color: red" />html
我测试的所有浏览器都用红色测试'html'。
答案 2 :(得分:3)
XHTML 1规范说:
С.3。元素最小化和空元素内容
给定内容模型不是EMPTY的元素的空实例(例如,空标题或段落)不使用最小化形式(例如使用<p>
</p>
而不是{{1 }})。
XHTML DTD将脚本标记指定为:
<p />
<!-- script statements, which may include CDATA sections -->
希望它有所帮助,
答案 3 :(得分:2)
虽然Andrew Clark的链接问题中标记为“正确”的答案在技术上是正确的,但其他浏览器(支持XHTML作为application / xhtml + xml发送)会将以text / html(即使使用XHTML doctype)形式发送的任何内容视为HTML。对于HTML中未公开的标签(例如<img>
),解析器(正确地)将自闭标签(例如<img />
)视为语法错误,并且忽略斜线。对于<script>
标记,其意图在HTML(text / html)中关闭,解析器根本找不到close标记,并将以下内容视为脚本的一部分。
请参阅:http://webkit.org/blog/68/understanding-html-xml-and-xhtml/
(或者如果服务器对你来说不合适,那就是Google缓存:http://209.85.173.132/search?q=cache:WFDCo2hoRnAJ:webkit.org/blog/68/understanding-html-xml-and-xhtml/+script+tag+surfin-safari&hl=en&client=safari&gl=us&strip=1)
答案 4 :(得分:1)
你不想经常测试这些水域,因为你依靠浏览器编码器来提前想象你的创造力。
您过分依赖目标浏览器进行自动翻译。我一直在View Source中看到类似的代码,其中额外的“/”被Firefox修改,但它们恰好出现在HTML解析器允许的地方。
在为浏览器供应商工作之后,我可以告诉你,许多奇怪的小事情都是(不情愿地)添加的,因为情况需要支持奇怪和不正确的东西。这些有趣的案例中的每一个都会增加膨胀,增加测试要求,并尽可能避免开发人员。