關(guān)于Mozilla瀏覽器不支持innerText的解決辦法
在各大瀏覽器中,除Mozilla瀏覽器外,幾乎都支持一個元素的屬性:innerText。我們可以通過它來快速獲取某個元素的內(nèi)的文本。
比如:
<p id="test"><strong><font color="red">Hello</font> , world!</strong></p>
我們使用代碼:alert((document.getElementById("test")).innerText)
在IE、Chrome中,均能獲取到“Hello , world!”,但是在Firefox中,卻得到了"undefined"。其原為是firefox中并不支持元素的innerText這個屬性。當(dāng)然,在網(wǎng)絡(luò)上已經(jīng)有很多好的方法來解決這個問題了,比如給HTMLElement原型添加一個屬性(讀取器)。
然而,所有文本節(jié)點都具有nodeValue屬性,而且所有瀏覽器都是支持的。我們可以嘗試用這種方法去讀取一個HTML元素內(nèi)的文本。
下面的原碼,正好解決了這個問題:
function getText(e) { //若瀏覽器支持元素的innerText屬性,則直接返回該屬性 if(e.innerText) { return e.innerText; } //不支持innerText屬性時,用以下方法處理 var t = ""; //如果傳入的是一個元素對象,則繼續(xù)訪問其子元素 e = e.childNodes || e ; //遍歷子元素的所有子元素 for(var i=0; i<e.length; i++) { //若為文本元素,則累加到字符串t中。 if(e[i].nodeType == 3) { t += e[i].nodeValue; } //否則遞歸遍歷元素的所有子節(jié)點 else { t += getText(e[i].childNodes); } } return t; }
有了這個函數(shù),我們再來看看如下DOM結(jié)構(gòu):
<p id="test"><strong><font color="red">Hello</font> , world!</strong></p>
然后,我們用:
alert(getText(document.getElementById("test"));
在IE、Chrome、Firefox中均能獲取到 "Hello, world!"
下面分享一下另外一個函數(shù)
try{ 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; } ); } catch(e){}
到此這篇關(guān)于關(guān)于Mozilla瀏覽器不支持innerText的解決辦法的文章就介紹到這了,更多相關(guān)不支持innerText內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript 十六進(jìn)制RGB色碼轉(zhuǎn)換器
JavaScript 十六進(jìn)制RGB色碼轉(zhuǎn)換器,大家可以學(xué)習(xí)下思路。2009-08-08javascript下漢字和Unicode編碼互轉(zhuǎn)代碼
這個是就是把漢字和Unicode編碼互轉(zhuǎn)的javascript代碼,也是從網(wǎng)上找到了,也許有人用得著??!2010-10-10JavaScript字符串轉(zhuǎn)換數(shù)字的方法
這篇文章主要介紹了JavaScript字符串轉(zhuǎn)換數(shù)字的方法,文章圍繞JavaScript字符串轉(zhuǎn)換數(shù)字的相關(guān)資料展開全文內(nèi)容,需要的小伙伴可以參考一下2021-12-12