innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别

时间:2021-05-28

innerText属性在IE浏览器中可以得到当前元素过滤掉HTMLTags之后的文本内容,在某些时候还是比较有用。但类似的非标准属性/方法在其他浏览器中并不一定都得到支持。
类似的像insertAdjacentElement,insertAdjacentElement,insertAdjacentHTML,insertAdjacentText等。如果需要使用这些非标准的方法,或者已有的代码大量使用了这些方法的话,就必须为其他浏览器提供对应的prototype定义。比如:


varisMinNS5=(navigator.appName.indexOf("Netscape")>=0&&
parseFloat(navigator.appVersion)>=5)?1:0;

if(isMinNS5){
HTMLElement.prototype.insertAdjacentElement=function(where,parsedNode){
switch(where){
case’beforeBegin’:
this.parentNode.insertBefore(parsedNode,this)
break;
case’afterBegin’:
this.insertBefore(parsedNode,this.firstChild);
break;
case’beforeEnd’:
this.appendChild(parsedNode);
break;
case’afterEnd’:
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;
}
);
}

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章