浏览器解析器不预判,只按html living standard执行容错修复,如遇hello会立即关闭再挂载后续内容,dom已被单向改写且不可逆,js无法获取原始结构,w3c validator才是唯一能做规范级预判的工具。

浏览器解析器不预判,只容错修复
HTML 解析器没有“预判”能力,它不会提前警告或中断加载,而是按 HTML Living Standard 定义的错误恢复算法直接修正 DOM。比如遇到 <div><p>hello</p></div>,它会立刻关闭 <p></p>(因为 不合法出现在 <p></p> 内),再把后续内容挂到 <div> 外——你写的和最终 DOM 完全不同。
<p>这种修复是单向、不可逆的,且不暴露给 JS:调用 <code>document.body.innerHTML 返回的是已修正后的字符串,不是原始源码。所以任何“在运行时检测未闭合标签”的 JS 方法(如正则计数 <div> 和 <code>










