Firefox 下innerHTML在操纵量大了往后机能降落很锋利,有人写了个进步innhtml机能的取代要领:
function replaceHtml(el, html) { var oldEl = typeof el === "string" ? document.getElementById(el) : el; /*@cc_on // 原始的 innerHTML 在 IE 中的机能好一点 oldEl.innerHTML = html; return oldEl; @*/ var newEl = oldEl.cloneNode(false); newEl.innerHTML = html; oldEl.parentNode.replaceChild(newEl, oldEl); /* 一旦我们从 DOM 上移除老的元素,则返回新的元素引用。*/ return newEl; }; 可以直接用el=replaceHtml(el, newHtml)取代el.innerHTML=newHtml。
速率到底有多大晋升,还得测试措辞。作者提供了一个测试页面:http://stevenlevithan.com/demo/replaceHtml.html
此要领大大进步了 innerHTML 在 Firefox 和 Safari 上的机能。replaceHtml() 在 Firefox 2.0.0.6 里 destroy 与 replace 的速率各快了 473 倍以及 50 倍。而在 Safari 3.0.3 beta 上则是 create 100 倍,replace 50 倍。
对付 Opera 也依然有机能进步,只是进步幅度没有上面两种赏识器惊人罢了,
唯在 IE 中,则原始的 innerHTML 的要领更服从点。
原文:http://www.js8.in/607.html (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|