【发布时间】:2017-02-08 11:07:06
【问题描述】:
当 HTML 标记未关闭时,我遇到了一些有趣的功能。有时浏览器会插入额外的开始和结束标签来补偿,有时它只是插入一个结束标签。这最好通过示例来解释:
带有<sup>标签:
first text node
<div> This is a parent div <sup>superscript tag starts IN parent</div> text OUTSIDE node of parent
带有<s>标签:
first text node
<div> This is a parent div <s>strikethrough tag starts IN parent</div> text OUTSIDE node of parent
正如您在第一个示例中看到的那样,浏览器会在其父标签关闭之前自动关闭<sup> 标签。但是,在第二个示例中,浏览器似乎在其父 结束之前关闭了 <s> 标签,然后从 @987654331 开始插入 另一个 @ 在父级之后。
我查看了 <s> 和 <sup> 规范 - 我似乎找不到任何关于浏览器如何解释和处理未闭合标签的具体内容。至少没有任何内容可以解释此功能。
我想知道这是因为我正在使用的实时降价解析器 - 用户可能无法在解析源代码之前完成他们的标签。
我想知道浏览器是如何处理这些事情的,所以我可以为那个用例编写代码。目前,浏览器以不同的方式处理关闭不同的标签(正如您在我的示例中看到的那样)。
有人知道为什么浏览器会这样做吗?或者至少知道一个行为相同的元素列表?
【问题讨论】:
-
你为什么要首先编码不正确的
html。您是否有任何特殊原因要这样做,或者您只是在尝试。任何浏览器都有其解析引擎,他当然必须以最好的方式显示内容。 -
我正在制作一个高效的实时降价解析器 - 所以我希望它在用户输入降价时尽可能准确地显示(如果他们使用 HTML,那么它可能会解析不正确的 HTML直到他们关闭标签)。
-
解析对我来说很难深入。可能的铅。 Error Handling / Parsing
-
只是为了消遣,this page has many unclosed <h3> tags,这会导致...现代浏览器中的有趣行为!
标签: html html-parsing