innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等區(qū)別
更新時間:2007年06月29日 00:00:00 作者:
innerText 屬性在 IE 瀏覽器中可以得到當(dāng)前元素過濾掉 HTML Tags 之后的文本內(nèi)容,在某些時候還是比較有用。但類似的非標(biāo)準(zhǔn)屬性/方法在其他瀏覽器中并不一定都得到支持。
類似的像 insertAdjacentElement , insertAdjacentElement , insertAdjacentHTML , insertAdjacentText 等。如果需要使用這些非標(biāo)準(zhǔn)的方法,或者已有的代碼大量使用了這些方法的話,就必須為其他瀏覽器提供對應(yīng)的 prototype 定義。比如:
var isMinNS5 = (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){
var r = this.ownerDocument.createRange();
r.setStartBefore(this);
var parsedHTML = r.createContextualFragment(htmlStr);
this.appendChild(parsedHTML)
}
HTMLElement.prototype.insertAdjacentText = function(where,txtStr){
var parsedText = document.createTextNode(txtStr)
this.insertAdjacentElement(where,parsedText)
}
HTMLElement.prototype.__defineGetter__
(
"innerText",
function(){
var anyString = "";
var childS = this.childNodes;
for(var i=0; i<childS.length; i++){
if(childS[i].nodeType==1)
anyString += childS[i].tagName=="BR" ? \n : childS[i].innerText;
else if(childS[i].nodeType==3)
anyString += childS[i].nodeValue;
}
return anyString;
}
);
}
類似的像 insertAdjacentElement , insertAdjacentElement , insertAdjacentHTML , insertAdjacentText 等。如果需要使用這些非標(biāo)準(zhǔn)的方法,或者已有的代碼大量使用了這些方法的話,就必須為其他瀏覽器提供對應(yīng)的 prototype 定義。比如:
var isMinNS5 = (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){
var r = this.ownerDocument.createRange();
r.setStartBefore(this);
var parsedHTML = r.createContextualFragment(htmlStr);
this.appendChild(parsedHTML)
}
HTMLElement.prototype.insertAdjacentText = function(where,txtStr){
var parsedText = document.createTextNode(txtStr)
this.insertAdjacentElement(where,parsedText)
}
HTMLElement.prototype.__defineGetter__
(
"innerText",
function(){
var anyString = "";
var childS = this.childNodes;
for(var i=0; i<childS.length; i++){
if(childS[i].nodeType==1)
anyString += childS[i].tagName=="BR" ? \n : childS[i].innerText;
else if(childS[i].nodeType==3)
anyString += childS[i].nodeValue;
}
return anyString;
}
);
}
相關(guān)文章
靈活使用console讓js調(diào)試更簡單的方法步驟
這篇文章主要介紹了靈活使用console讓js調(diào)試更簡單的方法步驟,適當(dāng)使用這些方法可以使調(diào)試更容易,更快速,更直觀,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04不依賴Flash和任何JS庫實現(xiàn)文本復(fù)制與剪切附源碼下載
本篇文章給大家分享的文本復(fù)制與剪切板功能,實現(xiàn)此功能不依賴falsh插件和任何js庫實現(xiàn)的,感興趣的朋友一起看看吧2015-10-10原生JS實現(xiàn)圖片網(wǎng)格式漸顯、漸隱效果
這篇文章主要介紹了原生JS實現(xiàn)圖片網(wǎng)格式漸顯、漸隱效果,需要的朋友可以參考下2017-06-06JavaScript+html5 canvas繪制漸變區(qū)域完整實例
這篇文章主要介紹了JavaScript+html5 canvas繪制漸變區(qū)域的方法,結(jié)合完整實例形式分析了canvas顏色調(diào)用與圖形繪制的相關(guān)技巧,需要的朋友可以參考下2016-01-01