通过 Dom 方法提高 innerHTML 性能


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;
}
;

此方法大大提高了 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 的方法更效率点
(转 怿飞..)


坐断江南 笑煞之!!
posted @ 2008-03-08 08:47 坐断东南 笑煞之!! 阅读(254) 评论(2)  编辑 收藏 所属分类: javascirpt

  回复  引用  查看    
#1楼 2008-03-10 11:03 | Clark Zheng      
学习了,谢谢
  回复  引用  查看    
#2楼 2008-04-22 10:10 | PerfectDesign      
这种数据竟然都能统计出来,非常佩服楼主,谢谢分享了!

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
另存  打印