码迷,mamicode.com
首页 > 其他好文 > 详细

节点插入

时间:2014-11-21 18:33:12      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   for   

对于早期的w3c浏览器,并没有实现ie的私有方法insertAdjacentHTML,可以用appendChild模拟该方法的实现:

  

if(typeof HTMLElement !==‘undefined‘ && !HTMLElement.prototype.insertAdjacentHTML){
            var insertAdjacentElement = function(node,position,el){
                switch (position.toLowerCase()){
                    case ‘beforebegin‘:
                        node.parentNode.insertBefore(el,node);
                        break;
                    case ‘afterbegin‘:
                        node.insertBefore(el,node.firstChild);
                        break;
                    case ‘beforeend‘:
                        node.appendChild(el);
                        break;
                    case ‘afterend‘:
                        if(node.nextSibling){
                            node.parentNode.insertBefore(el,node.nextSibling);
                        }else{
                            node.parentNode.appendChild(el);
                        }
                        break;
                }
            };
            HTMLElement.prototype.insertAdjacentHTML = function(position,html){
                var range = document.createRange(),frag,
                        parent;
                range.setStart(document.body);
                frag = range.createContextualFragment(html);
                if(this.nodeType == 3 || this.nodeType == 8){
                    parent = this.parentNode;
                    insertAdjacentElement(parent,position,frag);
                }else{
                    insertAdjacentElement(this,position,frag);
                }
            }
        }

  但是出于好奇,我用了jsperf对插入节点的各个方法进行性能分析,发现依旧是appendChild的插入方法效率最高(指的是单位时间内的操作数)。

节点插入

标签:style   blog   http   io   ar   color   os   sp   for   

原文地址:http://www.cnblogs.com/accordion/p/4113429.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!