javascript – 使用documentFragment的IE性能不佳
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 使用documentFragment的IE性能不佳,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1259字,纯文字阅读大概需要2分钟。
内容图文
为了测试DOM操作与innerHTML,我使用documentFragment(web page)来设计这个小测试方法,以将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;
}
解决方法:
想想我已经找到了它:它看起来像,虽然documentFragment应该是一个’离线’元素(一个不属于实时DOM的元素)IE不会这样对待它.强制片段真正离线的方法是向其附加一些元素,将其display属性设置为none,并将其余元素追加到该元素.完成后,删除display:none属性,并将documentFragment附加到DOM.
它仍然慢三倍(在我的电脑上它仍然需要大约1-1.5秒,而对于10000个元素,Chrome / Firefox大约需要2-300毫秒).因此,对于IE(甚至是版本10),使用innerHTML向DOM添加一堆元素是更快的方法.我会说,IE仍然是开发者的噩梦.
内容总结
以上是互联网集市为您收集整理的javascript – 使用documentFragment的IE性能不佳全部内容,希望文章能够帮你解决javascript – 使用documentFragment的IE性能不佳所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。