欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于Mozilla瀏覽器不支持innerText的解決辦法

 更新時(shí)間:2023年06月19日 12:53:34   投稿:mdxy-dxy  
在各大瀏覽器中,除Mozilla瀏覽器外,幾乎都支持一個(gè)元素的屬性:innerText。我們可以通過它來快速獲取某個(gè)元素的內(nèi)的文本。

在各大瀏覽器中,除Mozilla瀏覽器外,幾乎都支持一個(gè)元素的屬性:innerText。我們可以通過它來快速獲取某個(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)有很多好的方法來解決這個(gè)問題了,比如給HTMLElement原型添加一個(gè)屬性(讀取器)。

然而,所有文本節(jié)點(diǎn)都具有nodeValue屬性,而且所有瀏覽器都是支持的。我們可以嘗試用這種方法去讀取一個(gè)HTML元素內(nèi)的文本。

下面的原碼,正好解決了這個(gè)問題:

function getText(e) {
//若瀏覽器支持元素的innerText屬性,則直接返回該屬性
if(e.innerText) { return e.innerText; }
//不支持innerText屬性時(shí),用以下方法處理
var t = "";
//如果傳入的是一個(gè)元素對(duì)象,則繼續(xù)訪問其子元素
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è)賮砜纯慈缦翫OM結(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)文章

最新評(píng)論