關(guān)于Mozilla瀏覽器不支持innerText的解決辦法
在各大瀏覽器中,除Mozilla瀏覽器外,幾乎都支持一個(gè)元素的屬性:innerText。我們可以通過(guò)它來(lái)快速獲取某個(gè)元素的內(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這個(gè)屬性。當(dāng)然,在網(wǎng)絡(luò)上已經(jīng)有很多好的方法來(lái)解決這個(gè)問(wèn)題了,比如給HTMLElement原型添加一個(gè)屬性(讀取器)。
然而,所有文本節(jié)點(diǎn)都具有nodeValue屬性,而且所有瀏覽器都是支持的。我們可以嘗試用這種方法去讀取一個(gè)HTML元素內(nèi)的文本。
下面的原碼,正好解決了這個(gè)問(wèn)題:
function getText(e) {
//若瀏覽器支持元素的innerText屬性,則直接返回該屬性
if(e.innerText) { return e.innerText; }
//不支持innerText屬性時(shí),用以下方法處理
var t = "";
//如果傳入的是一個(gè)元素對(duì)象,則繼續(xù)訪問(wèn)其子元素
e = e.childNodes || e ;
//遍歷子元素的所有子元素
for(var i=0; i<e.length; i++) {
//若為文本元素,則累加到字符串t中。
if(e[i].nodeType == 3) { t += e[i].nodeValue; }
//否則遞歸遍歷元素的所有子節(jié)點(diǎn)
else { t += getText(e[i].childNodes); }
}
return t;
}有了這個(gè)函數(shù),我們?cè)賮?lái)看看如下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!"
下面分享一下另外一個(gè)函數(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js實(shí)現(xiàn)上一頁(yè)下一頁(yè)的效果【附代碼】
下面小編就為大家?guī)?lái)一篇js實(shí)現(xiàn)上一頁(yè)下一頁(yè)的效果【附代碼】。小編覺(jué)得非常不錯(cuò)?,F(xiàn)在分享給大家。希望能給大家一個(gè)參考。2016-03-03
Javascript驗(yàn)證Visa和MasterCard信用卡號(hào)的方法
這篇文章主要介紹了Javascript驗(yàn)證Visa和MasterCard信用卡號(hào)的方法,涉及javascript正則驗(yàn)證的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
JS數(shù)據(jù)類型STRING使用實(shí)例解析
這篇文章主要介紹了JS數(shù)據(jù)類型STRING使用實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
js簡(jiǎn)單實(shí)現(xiàn)根據(jù)身份證號(hào)碼識(shí)別性別年齡生日
根據(jù)身份證號(hào)碼識(shí)別性別年齡生日,目前就有一個(gè)這樣的需求,那么接下來(lái)為大家介紹下使用js是如何實(shí)現(xiàn)的,感興趣的朋友不要錯(cuò)過(guò)2013-11-11
解決ie11 SCRIPT5011:不能執(zhí)行已釋放Script的代碼問(wèn)題
這篇文章主要介紹了ie11 SCRIPT5011:不能執(zhí)行已釋放Script的代碼 ,需要的朋友可以參考下2019-05-05
js樹(shù)插件zTree獲取所有選中節(jié)點(diǎn)數(shù)據(jù)的方法
這篇文章主要介紹了js樹(shù)插件zTree獲取所有選中節(jié)點(diǎn)數(shù)據(jù)的方法,是對(duì)js樹(shù)插件zTree非常實(shí)用的操作,需要的朋友可以參考下2015-01-01
nestjs實(shí)現(xiàn)圖形校驗(yàn)和單點(diǎn)登錄的示例代碼
本文主要介紹了nestjs實(shí)現(xiàn)圖形校驗(yàn)和單點(diǎn)登錄的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
javascript中的數(shù)據(jù)類型檢測(cè)方法詳解
這篇文章主要介紹了javascript中的數(shù)據(jù)類型檢測(cè)方法,結(jié)合實(shí)例形式分析了javascript數(shù)據(jù)類型并總結(jié)分析了常見(jiàn)的數(shù)據(jù)類型檢測(cè)操作技巧,需要的朋友可以參考下2019-08-08
JavaScript報(bào)錯(cuò):Uncaught ReferenceError: XYZ is&
在 JavaScript 編程中,“Uncaught ReferenceError: XYZ is not defined” 是一種常見(jiàn)的錯(cuò)誤,這種錯(cuò)誤通常發(fā)生在試圖使用一個(gè)未聲明的變量或標(biāo)識(shí)符時(shí),故本文給大家介紹了JavaScript報(bào)錯(cuò):Uncaught ReferenceError: XYZ is not defined的解決方法,需要的朋友可以參考下2024-07-07

