我有一个复杂的网页,其中有很多被大量操纵的元素。 虽然这在 Chrome/FF 上运行相当流畅,但 IE (8 + 9) 似乎经常在此页面上卡住。
在 IE 上运行速度比在其他浏览器上慢得多的代码的一个特定部分是我将新元素附加到页面的地方:具体来说,我有 50 个(嵌套的)元素附加到 documentFragment,然后最终我将 documentFragment 附加到实际文档中的某个元素。最后一个追加在 Chrome/FF 上发生得非常快,但在 IE 中可能需要几秒钟以上。
我尝试使用 html()/innerHTML,这似乎只会让事情变得更糟(它们可能比 append() 更好——逐个添加元素,但 documentFragment 似乎确实有帮助)。问题是,我能做些什么呢?有没有更有效的方法可以在 IE 中插入这些元素?我是不是遗漏了一些可能导致它们插入速度如此缓慢的东西?
谢谢。
== 编辑 ==
代码示例(不是 1:1,但这是我通常指的):
function insertContent(elementsCollection)
{
var fragment = document.createDocumentFragment();
for (var i=0; i < elementsCollection.length; i++)
{
fragment.appendChild($(collection[i])[0]);
}
$("#parentDiv").append(fragment);
}
最佳答案
我一直使用(并推荐)
rootNode.replaceChild(newElement, oldElement)
我没有遇到您在 IE/FF/Chrome/Safari 中提到的问题。我单独准备新文档片段,并一次性用新节点替换现有节点,而不是一次构建事件 DOM 树节点。
关于javascript - 在 IE8+ 中附加元素的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11648674/