无论 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"
如果打开元素的堆栈在范围内没有与标记名称相同的元素,那么这是一个解析错误;忽略令牌。
...
那么处理解析错误的规则并不要求浏览器要么报告它们,要么不报告它们。验证者必须报告至少一个这样的解析错误,