首页 > 代码库 > 节点插入

节点插入

对于早期的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的插入方法效率最高(指的是单位时间内的操作数)。

节点插入