当使用 DOM 创建方法时,它必须假设你想要你创建它的结构。
如果您想确保不同浏览器中的结构相同,那么您应该始终手动添加它,即使 JavaScript 正在解析 HTML。不要依赖浏览器为您插入它,因为浏览器在这方面的行为可能不同。
Here's an example 你可以在 Firefox 中运行。
从这个 invalid 标记开始。
<p>
<div>original</div>
</p>
在解析 HTML 时,<div> 被踢出<p>,使其呈现如下...
<p></p>
<div>original</div>
<p></p>
但是如果我们用 DOM 方法创建一个相同的结构,Firefox 不会做任何修正。
var p = document.createElement('p');
p.appendChild(document.createElement('div'))
.appendChild(document.createTextNode('new'));
document.body.appendChild(p);
所以生成的 DOM 现在是这个......
<p></p>
<div>original</div>
<p></p>
<p>
<div>new</div>
</p>
因此您可以看到,即使在结构完全无效的情况下,它也不会进行您在解析 HTML 时看到的更正。
最终,您应该做的不是依赖常见的浏览器调整或更正,因为无法保证它们在浏览器之间是相同的。
使用结构良好且有效的 HTML,您会避免出现问题。