我正在测试不同方法的速度,以动态地将HTML元素添加到DOM.我在这里建立了一个测试人员(代码是工作版,非常邋)).对于不同的浏览器,结果是(非常)不同的,Chrome获得速度的所有点,Opera是第二个 - 但这不是问题.
在Firefox中,我检测到清除div的问题(来自它的childNodes).当添加了大约50.000个div元素时,使用just来清除它需要很长时间
[div].innerHTML = "";
这里发生了什么?firefox是否为此实现了一些内在的垃圾收集方法?
虽然我不确定innerHTML =""但你遗漏了一个可能使用DocumentFragments插入DOM的快速方法:正如John Resig所示.
正如ÓlafurWaage已经提到的那样,尽管innerHTML在很多情况下都比较快,因为它不是任何W3C标准的一部分,如果它们存在的话,怪癖的可能性要大得多.更不用说innerHTML不是现代浏览器中的事实标准.
这篇博文似乎表明,当使用innerHTML删除元素时,Firefox会花费大量时间进行清理.
在某些浏览器中(最值得注意的是,Firefox),虽然innerHTML通常比DOM方法快得多,但它花费了不成比例的时间来清除现有元素而不是创建新元素.知道了这一点,我们可以通过使用标准DOM方法删除父元素并使用innerHTML创建新元素来组合销毁元素的速度.