0

我在编写 HTML 方面没有太多经验。据我所知,现代网络浏览器不会抱怨一些错误,例如:

<html>
<ol>
<li> ordered item 1
<li> ordered item 2
</ul>

<ul>
<li> unordered item 1
<li> unordered item 2
</ul>
</html>

<ol>它不会报告和之间的不匹配错误</ul>,而是将页面呈现如下:

  • 订购项目 1
  • 订购项目 2

    • 未订购的项目 1
    • 未订购的项目 2

    我想知道:

    无论 HTML 中有什么错误,Web 浏览器都会呈现网页吗?

    IE

    在哪些情况下,Web 浏览器会抱怨 HTML 中的错误?

    此外,HTML5 规范是否需要这种无错误报告?

  • 4

    2 回答 2

    2

    答案在于HTMLXHTML之间的区别。

    HTML5 的关键是要有一个规范来同时作为 text/html 和 application/xhtml+xml。这解决了 XHTML 的一些历史问题,如果一个人在 2005 年进入 Web 开发,这些问题是非常紧迫的。我将把这方面的研究留给读者作为练习。

    如果您将 HTML5 内容作为XML提供(即使用 mime 类型 application/xhtml+xml),那么您可以预期客户端在解析时会失败并出现错误:

    XML Parsing Error: mismatched tag. Expected: </ol>.
    

    或者,如果您只是将其作为常规文本/html 提供,您可以期望在格式不佳的文档上出现标准的未定义浏览器行为

    我想明确指出,当 Web 浏览器显示损坏的 html 文档时,它们不一定能正常工作。像这样不匹配的标签通常会导致页面显示异常。

    于 2012-11-29T06:03:38.207 回答
    2

    无论 HTML 中有什么错误,Web 浏览器都会呈现网页吗?

    在 HTML 序列化中,现代浏览器遵循一种旨在容忍标记错误的解析算法,并将呈现它对完整输入流的任何内容。

    在 XHTML 序列化中,解析必须遵循 XML 解析规则。这意味着如果它遇到格式正确的错误,它必须停止解析输入流。浏览器不需要报告错误(Firefox 会,IE9 不会),并且可以选择简单地呈现它在必须停止解析时构建的任何 DOM,并保持 HTML5 符合性。

    在哪些情况下,Web 浏览器会抱怨 HTML 中的错误?

    实际上,浏览器不会报告错误,除了在使用 XHTML 序列化时出现的 XML 格式错误,而且只是有时。如果他们这样做了,那么他们就是在告诉用户,他们对作者在编写页面时是否犯了错误一点也不感兴趣。用户想要的只是访问内容。

    此外,HTML5 规范是否需要这种无错误报告?

    不,不是。浏览器有权报告此类错误。HTML 序列化解析算法非常清楚何时发生错误。在您加价的情况下,相关规则说:

    一个结束标签,其标签名称是以下之一:“address”、“article”、“aside”、“blockquote”、“button”、“center”、“details”、“dialog”、“dir”、“div”、 “dl”、“fieldset”、“figcaption”、“figure”、“footer”、“header”、“hgroup”、“listing”、“menu”、“nav”、“ol”、“pre”、“section ", "摘要", "ul"

    如果打开元素的堆栈在范围内没有与标记名称相同的元素,那么这是一个解析错误;忽略令牌。

    ...

    那么处理解析错误的规则并不要求浏览器要么报告它们,要么不报告它们。验证者必须报告至少一个这样的解析错误,

    于 2012-11-29T08:11:41.057 回答