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