【问题标题】:Is IE the only web browser that requires <script></script> and hates <script/>?IE 是唯一需要 <script></script> 而讨厌 <script/> 的浏览器吗?
【发布时间】:2009-03-28 13:37:41
【问题描述】:

这是多么糟糕,经过一个小时的狩猎和啄食,我想我还不如为世界做出贡献:你的 JavaScript 在 IE 中无法运行的唯一原因是因为你认为你可以拉一个快速的在它上面并使用你喜欢的 xHTML 快捷方式。

I've read the dtd 我真的找不到任何理由让 IE 如此挑剔。

【问题讨论】:

  • 我当然希望搜索与我非常精确的问题完全相同的重复项更容易。

标签: internet-explorer cross-browser


【解决方案1】:

您没有使用 xhtml,您使用的是 html,并且 html 不支持 xml 的自闭合标记语法——在 html 中使用自闭合标记语法将导致属性 '/' 被放置在元素,而不是关闭标签。

现在,根据 &lt;script&gt; 标记的上下文,浏览器通常会更正此问题,因此您实际上是依靠浏览器自动更正来使一切正常运行。

【讨论】:

    【解决方案2】:

    IE是唯一需要而讨厌的浏览器吗?

    不,所有当前的浏览器在提供 XHTML 作为 text/html 时的行为都是一样的。浏览器之间只有区别,除非您嗅探 IE 并向其他浏览器发送不同的 Content-Type。 (最重要的提示:不要那样做。没有什么可得到的,而且有很多奇怪的东西会被咬。)

    HTML 浏览器不会将空元素语法理解为任何特殊的东西,它只是用来解决 HTML 的未封闭元素和 XHTML 的空元素之间的裂缝。因此,您永远不能将其用作“快捷方式”;空元素只能且必须用于空元素,如XHTML Appendix C 准则中所述。

    您可以简单地验证这一点:

    <p style="color: red" />html
    

    我测试过的所有浏览器都将“html”颜色设为红色。

    【讨论】:

    • 绝对正确,是的,这很好地展示了 HTML 模式下的浏览器如何看到“XHTML”。
    【解决方案3】:

    XHTML 1 规范说:

    С.3。元素最小化和空元素内容

    给定内容模型不是 EMPTY 的元素的空实例(例如,空标题或段落)不要使用最小化形式(例如,使用 &lt;p&gt; &lt;/p&gt; 而不是 &lt;p /&gt;)。

    XHTML DTD 将脚本标签指定为:

    &lt;!-- script statements, which may include CDATA sections --&gt;

    &lt;!ELEMENT script (#PCDATA)&gt;

    希望对你有帮助,

    这是来自: Why don't self-closing script tags work?

    【讨论】:

    • 但是,如果您将内容发送到 IE,您将不得不发送 html,而不是 x[ht]ml,因此 xhtml 规范实际上是无关紧要的:D
    • 您搜索了什么来找到该链接?我正在努力扩大自己回答自己问题的能力,但我没有找到。
    • XHTML 规范是相关的,因为引用的特定附录是关于 HTML 兼容性必须避免的结构。
    • XHTML 规范的附录 C,这就是它的来源,是关于确保与 HTML 的向后兼容性。 XML 不会禁止非空元素最小化。
    【解决方案4】:

    虽然 Andrew Clark 的链接问题中标记为“正确”的答案在技术上是正确的,但其他浏览器(支持作为 application/xhtml+xml 发送的 XHTML)将任何作为 text/html(即使使用 XHTML doctype)发送的内容视为HTML。对于 HTML 中未闭合的标签(例如&lt;img&gt;),解析器(正确地)将自闭合标签(例如&lt;img /&gt;)视为语法错误,并忽略斜杠。在&lt;script&gt; 标签的情况下,这意味着在 HTML (text/html) 中关闭,解析器根本找不到关闭标签,并将以下内容视为脚本的一部分。

    见:http://webkit.org/blog/68/understanding-html-xml-and-xhtml/

    (或者如果服务器对你来说像我一样不稳定,这里是谷歌缓存: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

    【讨论】:

      【解决方案5】:

      您不想不断地测试这些水域,因为您依赖浏览器编码人员提前想象您的创造力。

      您过于依赖目标浏览器来自动翻译。我一直在查看源代码中看到类似的代码,其中额外的“/”被 Firefox 标记为红线,但它们恰好位于 HTML 解析器允许的地方。

      在为浏览器供应商工作过之后,我可以告诉您,许多奇怪的小事情发生在工作中是(不情愿地)添加的,因为情况需要一些奇怪和不正确的东西的支持。这些有趣的案例中的每一个都会增加臃肿,增加测试要求,并且开发人员尽可能避免。

      【讨论】:

        猜你喜欢
        • 2011-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-22
        • 2014-11-13
        • 1970-01-01
        • 2018-01-27
        相关资源
        最近更新 更多