3

我有一个复杂的网页,其中有很多被大量操作的元素。虽然这在 Chrome/FF 上运行得非常顺利,但 IE (8 + 9) 似乎经常在此页面上冻结。

在 IE 上运行比在其他浏览器上慢得多的代码的一个特定部分是我将新元素附加到页面:具体来说,我有 50 个(嵌套)元素,我附加到一个 documentFragment,然后最终我附加documentFragment 到实际文档中的某个元素。最后一个追加发生在 Chrome/FF 上,速度很快,但在 IE 中可能需要几秒钟以上。

我尝试使用 html() / innerHTML,这似乎只会让事情变得更糟(它们可能比 append()-ing 元素一个接一个更好,但 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);
}
4

1 回答 1

2

我一直使用(并推荐)

rootNode.replaceChild(newElement, oldElement)

我没有遇到你在 IE/FF/Chrome/Safari 中提到的问题。我单独准备新的文档片段并一次性用新的节点替换现有节点,而不是一次构建活动的 DOM 树节点。

于 2012-07-25T11:37:36.263 回答