为了测试 DOM 操作与 innerHTML 的对比,我使用documentFragment
(网页)将 10000 个元素附加href
到一个div
元素中,使用了这个小测试方法。Chrome 或 Firefox 的性能还可以,但在 IE (10, 9, 8) 中性能非常糟糕,大约需要10-12 秒。谁能解释这种差异和/或详细说明提高 IE 性能的解决方案?
这是一个演示它的jsfiddle 。
方法:
function useFragment(){
var frag = document.createDocumentFragment(),
i = 10000,
rval = document.createElement('span');
frag.appendChild(rval);
do {
var optText = 'option '+i
,ref = document.createElement('a')
,zebra = i%2 ? 'zebra' : ''
,islist = true
,isSel = i === 5
;
rval.insertBefore(ref,rval.firstChild);
ref.appendChild(document.createTextNode(optText));
ref.id = 'opt' + i;
ref.className = zebra + (islist && isSel ? ' scrollSelect' : '');
ref.href = '#' + i;
ref.title = optText;
} while (i-->0);
return rval;
}