innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2018-09-22 01:05
innerText属性在IE浏览器中可以得到当前元素过滤掉HTMLTags之后的文本内容,在某些时候还是比较有用。但类似的非标准属性/方法在其他浏览器中并不一定都得到支持。
类似的像insertAdjacentElement,insertAdjacentElement,insertAdjacentHTML,insertAdjacentText等。如果需要使用这些非标准的方法,或者已有的代码大量使用了这些方法的话,就必须为其他浏览器提供对应的prototype定义。比如:
parseFloat(navigator.appVersion)>=5)?1:0;
if(isMinNS5){
HTMLElement.prototype.insertAdjacentElement=function(where,parsedNode){
switch(where){
casebeforeBegin:
this.parentNode.insertBefore(parsedNode,this)
break;
caseafterBegin:
this.insertBefore(parsedNode,this.firstChild);
break;
casebeforeEnd:
this.appendChild(parsedNode);
break;
caseafterEnd:
if(this.nextSibling){
this.parentNode.insertBefore(parsedNode,this.nextSibling);
}
else{
this.parentNode.appendChild(parsedNode)
}
break;
}
}
HTMLElement.prototype.insertAdjacentHTML=function(where,htmlStr){
varr=this.ownerDocument.createRange();
r.setStartBefore(this);
varparsedHTML=r.createContextualFragment(htmlStr);
this.appendChild(parsedHTML)
}
HTMLElement.prototype.insertAdjacentText=function(where,txtStr){
varparsedText=document.createTextNode(txtStr)
this.insertAdjacentElement(where,parsedText)
}
HTMLElement.prototype.__defineGetter__
(
"innerText",
function(){
varanyString="";
varchildS=this.childNodes;
for(vari=0;i<childS.length;i++){
if(childS[i].nodeType==1)
anyString+=childS[i].tagName=="BR"?\n:childS[i].innerText;
elseif(childS[i].nodeType==3)
anyString+=childS[i].nodeValue;
}
returnanyString;
}
);
}
文章标题:innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
文章链接:http://soscw.com/essay/17091.html