为了测试DOM操作与innerHTML之间的性能差异,我设计了这个小测试方法,使用一个documentFragment(网页)向一个div元素附加10000个href元素。在Chrome或Firefox中,性能还可以,但在IE(10、9、8)中,性能非常糟糕,需要大约10-12秒的时间。有人可以解释一下这种差异并/或详细说明提高IE性能的解决方案吗?
这里是一个jsfiddle演示它。
该方法:
这里是一个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;
}
useInnerHtmlBttn.onclick
定义(以及许多其他可能在页面加载时异步发生的事情)包含在定时部分中。 - John Dvorak