JavaScript中的严格HTML解析器

JavaScript中的严格HTML解析器,javascript,html,parsing,browser,pandoc,Javascript,Html,Parsing,Browser,Pandoc,在HTML中,块元素不能是内联元素的子元素。但是,浏览器乐于接受此HTML: <i>foo <h4>bar</h4> fizz</i> 这至少是有效的,但不是忠实的。另一种方法是(选项2): foo-bar嘶嘶作响 有没有办法强迫DOMparser进行更严格的解析,从而得到选项1或2?(这似乎不可能) 或者,处理这个问题的最佳方法是什么,即给定第一个字符串,得到选项1或2?是否有一个JS解析器可以做到这一点(以及标准的其他严格执行) 编辑:结果

在HTML中,块元素不能是内联元素的子元素。但是,浏览器乐于接受此HTML:

<i>foo <h4>bar</h4> fizz</i>
这至少是有效的,但不是忠实的。另一种方法是(选项2):

foo-bar嘶嘶作响
有没有办法强迫
DOMparser
进行更严格的解析,从而得到选项1或2?(这似乎不可能)

或者,处理这个问题的最佳方法是什么,即给定第一个字符串,得到选项1或2?是否有一个JS解析器可以做到这一点(以及标准的其他严格执行)

编辑:结果表明,当内容位于
p
而不是
div
中时,至少Chrome(78.0.3904.108)的HTML解析器的行为不同当上面的HTML位于
p
中时,它将被解析为选项2
!但它在
div
中时保持不变


所以我想现在的问题是:如何将ps的行为强制到div上?

这是否回答了您的问题?谢谢,但不;另一个问题是在事后尝试验证解析的HTML,并检测错误;我试图找到一个解析器,它在第一次遍历时生成有效的严格HTML。这种区别在这里并不重要。这两个问题都希望通过
DOMparser
从非严格HTML获取严格HTML。答案是一样的:不,没有办法让
DOMparser
这样做,您需要代码或库来完成。
<i>foo </i><h4>bar</h4> fizz
<i>foo </i><h4><i>bar</i></h4><i> fizz</i>