在 IE 下无法在本身未完成结点的父结点上 appendChild 新的结点,否则会造成终止操作的错误。
针对上篇文章的总结出来的思路我想到了,既然不能往后加,我们可以往前插入,接下来就的出使用 insertBefore 来达到 fix 终止操作的错误。
同样的代码:
var p = document.body;
var c = document.createElement("div");
c.innerHTML = "i'm a div element from dom created";
//p.appendChild(c);
p.insertBefore(c, p.lastChild);
在正在完成的结点前插入我们需要插入的结点,这样的 IE 终止操作的错误就被完全 fix 掉了,但是有些小小的不足,DOM 序列因此造成了些许变化,但是这个变化是在我们 coder 的可控范围内,我们完全可以在 document complete 后做一次 swapNode 来使 DOM 的序列还原到我们所期望的状态。