Javascript 什么';在IE8+;中附加元素的最有效方法是什么;?
我有一个复杂的网页,其中有很多元素是严重操纵。 虽然这在Chrome/FF上运行得相当顺利,但IE(8+9)在这一页上似乎经常冻结 代码的一个特定部分在IE上运行的速度比在其他浏览器上运行的速度要慢得多,那就是我将新元素添加到页面中:具体地说,我将50个(嵌套)元素添加到documentFragment中,然后最终将documentFragment添加到实际文档中的某个元素中。最后一次追加发生在v。在Chrome/FF上速度很快,但在IE中可能需要几秒钟以上 我尝试使用html()/innerHTML,这似乎只会让事情变得更糟(它们可能比逐个追加()元素要好,但documentFragment似乎确实有帮助)。问题是,我能做些什么?有没有更有效的方法可以在IE中插入这些元素?我是否遗漏了可能导致插入速度如此缓慢的内容 谢谢Javascript 什么';在IE8+;中附加元素的最有效方法是什么;?,javascript,jquery,html,internet-explorer,Javascript,Jquery,Html,Internet Explorer,我有一个复杂的网页,其中有很多元素是严重操纵。 虽然这在Chrome/FF上运行得相当顺利,但IE(8+9)在这一页上似乎经常冻结 代码的一个特定部分在IE上运行的速度比在其他浏览器上运行的速度要慢得多,那就是我将新元素添加到页面中:具体地说,我将50个(嵌套)元素添加到documentFragment中,然后最终将documentFragment添加到实际文档中的某个元素中。最后一次追加发生在v。在Chrome/FF上速度很快,但在IE中可能需要几秒钟以上 我尝试使用html()/innerH
==编辑== 代码示例(不是1:1,但这是我通常所指的):
函数插入内容(elementsCollection)
{
var fragment=document.createDocumentFragment();
for(var i=0;i
我一直使用(并推荐)
我没有遇到你在IE/FF/Chrome/Safari中提到的问题。我单独准备新的文档片段,并一次性用新节点替换现有节点,而不是一次构建活动的DOM树节点。如果您发布一些代码示例,那么尝试和了解发生了什么会容易得多。问题是插入还是重绘布局?如果将其插入到具有
display:none
的元素中,它是否仍然运行缓慢?我问这个问题的原因是因为我知道,在过去,至少IE在表等方面的深层嵌套级别渲染方面非常慢。所以我想知道这是否就是问题所在。。。
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)