【问题标题】:CSS, HTML Web Browser invalid markup tolerancesCSS、HTML Web 浏览器无效标记容差
【发布时间】:2011-05-14 08:15:09
【问题描述】:

我刚刚在 Safari 中打开了一个网页,我看到了什么?整个文本是绿色的?但我只把标题设为绿色,所以常规文本应该是黑色的?然后我想:好吧,我用 Firefox 编写了这个网站。起初我认为这是 Safari 的错误解释,但我再次查看了我的代码,我看到了:

<h3>Caption<h3>
<p>BlacktextblacktextBlacktextblacktextBlacktextblacktext</p>

我还没有关闭h3标签。

所以 Safari 正确地解释了我的代码,而 Firefox 容忍了这个错字?在 Firefox 中,它可以正常工作:绿色标题黑色文本; Safari 说:“不不!你忘了关闭 h3?现在一切都是绿色的,处理它。”

我的问题是:主流浏览器的容忍度如何?浏览器可以容忍什么(错别字、无效等)?

【问题讨论】:

    标签: html browser cross-browser


    【解决方案1】:

    实际上,两个浏览器都“容忍”了您的无效标记(无效,因为您有两个未闭合的&lt;h3&gt; 标签),它们只是以不同的方式这样做。 Gecko (Firefox) 决定 h3 不能包含 p 并在打开 p 之前关闭它们。另一方面,WebKit(Safari,Chrome)可能在文档正文的末尾关闭它们。

    所有浏览器都会尽最大努力从 HTML 文档的最大混乱中恢复过来。他们的“容忍”水平或多或少是相等的,但结果会有所不同。最好不要依赖浏览器纠错。使用w3c validator 确保您的代码是有效的,并给予它在所有浏览器中正确解析的最佳机会。

    【讨论】:

    • +1 使用验证器检查网站比思考浏览器对无效标记的容忍度更容易。
    【解决方案2】:

    浏览器对错误根本没有任何容忍度,但它们会尽最大努力纠正不正确的代码,以便呈现。

    虽然有关于如何呈现正确代码的明确定义的标准,但对于如何解释不正确的代码则完全没有标准。任何浏览器都可以使用自己的计划来充分利用这种情况。

    这两种浏览器都不能正确解释代码,因为代码本身是不正确的。所以,这两种浏览器都没有做错任何事情,它们只是做不同的事情。

    【讨论】:

    • " ...关于如何解释不正确的代码根本没有标准"。严格来说,这可能是正确的,但有些误导。 HTML5 草案详细描述了如何处理任何字节流并将其视为 HTML,因此下一代浏览器都应该以相同的方式修复损坏的标记。
    • @Alohci:这听起来很有希望,但这不是它现在的工作方式。无论如何,代码从一开始就应该是正确的,而不是依靠浏览器中的纠错来使其正确。我们都知道,即​​使以后错误处理也会标准化,但实际的实现还是会有所不同……
    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    相关资源
    最近更新 更多