最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript textContent與innerText的異同分析

 更新時間:2010年10月22日 15:35:12   作者:  
因為發(fā)現(xiàn)網(wǎng)絡(luò)上很少有這方面的內(nèi)容,因此就把自己私有blog上的這篇文章搬出來到Boluor的公開blog,方便其它人查閱。
textContent與innerText的不同

IE下有個innerText屬性,F(xiàn)F下有個textContent屬性。很多以前給IE寫腳本的,在FF下找不到innerText屬性,于是網(wǎng)上搜到的建議是用textContent來替代。反之給FF寫腳本的也一樣。

但是實際上,這里有個誤解。網(wǎng)上很多文章說“FF下等效于innerText屬性的屬性是textContent”————但是事實上并非如此。innerText與textContent有幾點很重要的不同,導(dǎo)致它們在一些情況下不能直接互換使用。

前些日子寫了個代碼高亮JS插件,在IE下工作完全正常,而在FF下就不對頭。在IE下使用的是innerText屬性,而在FF下使用的則是textContent屬性。在進行字符串處理的時候二者的不同導(dǎo)致了完全不一樣的結(jié)果。于是就專門寫了點東西來測試二者的不同。

根據(jù)測試的結(jié)果表明:
innerText:它的內(nèi)容實際上就是你在瀏覽器看到的內(nèi)容。它的值是經(jīng)過瀏覽器解釋過的結(jié)果:它將元素的innerHTML換碼、解釋,最終顯示出來,然后去除各種格式信息留下的純文本。它會把<br/>換成換行符,會將多個空格并成一個空格對待,而本來的換行符卻并不會引起換行,IE會將其當(dāng)作一個普通的單詞邊界(一般是空格)。再說的形象點,一個元素的innerText屬性的值,和你將這個元素內(nèi)容復(fù)制粘貼到記事本里的內(nèi)容一致。

textContent:它的內(nèi)容則是innerHTML去除所有標(biāo)簽后的內(nèi)容(我懷疑這個是從XMLDOM中照搬過來的屬性,特性完全一致)。它會將innerHTML中的轉(zhuǎn)義字符(&lt;、&nbsp;什么的)進行換碼,但是不對任何html標(biāo)簽進行解釋,而是直接剔除它們。它也不會對innerHTML中的文本按照HTML的方式進行格式轉(zhuǎn)換,比如多個空格還會原原本本地保留,不會合并為一個空格,換行符仍然存在(相反<br/>卻不會導(dǎo)致?lián)Q行)。

更加簡練的總結(jié):IE中的innerText是需要對innerHTML的值進行:
1、HTML轉(zhuǎn)義(等同于XML轉(zhuǎn)義,對&lt;、&amp;等轉(zhuǎn)義字符進行處理);
2、經(jīng)過HTML解釋和CSS樣式解釋;
3、之后又剔除格式信息
之后留下的純文本。
而FF中的textContent沒有2、3步,在經(jīng)過了HTML轉(zhuǎn)義之后直接剔除所有html標(biāo)簽后得到的純文本。

一個例子:
復(fù)制代碼 代碼如下:

<div id=”T1″>
ABCD
EFG HIJ<br/>KLM &nbsp;N
OPQ<div>RS</div>T
T
<div>

這個id為T1的div,
在IE中的innerText屬性的值為:
復(fù)制代碼 代碼如下:

ABCD EFG HIJ
KLM N OPQ
RS
T T

而在FF中的textContent的屬性的值為:
復(fù)制代碼 代碼如下:

(這里有個換行)
ABCD
EFG HIJKLM N
OPQRST
T

注意那個div中還嵌套了個div,而這個更能反映IE的innerText和FF的textContent各自的處理方式的不同:
div是塊(block)元素,默認(rèn)會獨占一行,因此,在IE中的innerText反映為上述div中的RS獨占一行,而FF的textContent完全不理會HTML格式,因此其textContent中的RS是和其它字符連在一起的,不會獨占一行。

如果想更進一步,看看這個有趣的結(jié)果:
假如給里面那個div加一個style=”float:left;”,那么這個div就會由塊元素變化為行元素,不再獨占一行,因此IE的innerText屬性中RS便不再獨占一行,而與其它字符連在一起,而在FF中由于textContent不理會標(biāo)簽更不會理會CSS,因此它的textContent屬性的值不會有任何變化。

這么看來,很多網(wǎng)上說的“讓FF支持innerText屬性”云云,其實都是多多少少有問題的。要實現(xiàn)IE的innerText,遠(yuǎn)沒有想象中的那么簡單,你若要使用JavaScript讓FF擁有和innerText完全一樣的效果,得自己把html標(biāo)簽屬性全部parse一遍,解釋它們,甚至還需要去解釋css……
(不過根據(jù)原理,貌似通過剪貼板的復(fù)制和取回操作可以在FF下模擬innerText效果(這個未測試),但是1有副作用,2FF下的剪貼板操作也很麻煩。)

不過還好,大多數(shù)時候我們并不需要那么精確,使用innerHTML做點簡單的處理即可達(dá)到比較接近的效果了。

注:以上代碼均在IE6和FF3下完成測試。

相關(guān)文章

  • 通過JavaScript實現(xiàn)動態(tài)圣誕樹詳解

    通過JavaScript實現(xiàn)動態(tài)圣誕樹詳解

    這篇文章主要為大家介紹幾個好看的基于HTML+CSS+JS的圣誕樹,希望圣誕節(jié)那天圣誕老爺爺能把我喜歡的你塞到我床上。感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2021-12-12
  • JavaScript中boolean類型之三種情景實例代碼

    JavaScript中boolean類型之三種情景實例代碼

    下面小編就為大家?guī)硪黄狫avaScript中boolean類型之三種情景實例代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • JavaScript中style.left與offsetLeft的使用及區(qū)別詳解

    JavaScript中style.left與offsetLeft的使用及區(qū)別詳解

    這篇文章主要介紹了JavaScript中style.left與offsetLeft的使用及區(qū)別詳解的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • js時間轉(zhuǎn)換毫秒的實例代碼

    js時間轉(zhuǎn)換毫秒的實例代碼

    在本篇文章里小編給大家整理的是關(guān)于js時間轉(zhuǎn)換毫秒的實例代碼以及相關(guān)知識點,需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • js點擊任意區(qū)域彈出層消失實現(xiàn)代碼

    js點擊任意區(qū)域彈出層消失實現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了js點擊任意區(qū)域彈出層消失實現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • addRule在firefox下的兼容寫法

    addRule在firefox下的兼容寫法

    addRule在firefox下的兼容寫法...
    2006-11-11
  • 20道JS原理題助你面試一臂之力(必看)

    20道JS原理題助你面試一臂之力(必看)

    本文針對目前常見的面試題,僅提供了相應(yīng)的核心原理及思路,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-07-07
  • Bootstrap模態(tài)框禁用空白處點擊關(guān)閉

    Bootstrap模態(tài)框禁用空白處點擊關(guān)閉

    這篇文章主要為大家詳細(xì)介紹了Bootstrap模態(tài)框禁用空白處點擊關(guān)閉的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 理解Javascript的call、apply

    理解Javascript的call、apply

    這篇文章主要介紹了Javascript的call、apply,其作用基本相同,但也有略微的區(qū)別,需要的朋友可以參考下
    2015-12-12
  • Echarts如何重新渲染實例詳解

    Echarts如何重新渲染實例詳解

    這篇文章主要給大家介紹了關(guān)于Echarts重新渲染的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-05-05

最新評論

无极县| 江陵县| 旬邑县| 东丰县| 汝城县| 中山市| 镇远县| 永登县| 八宿县| 尖扎县| 德惠市| 东丽区| 贵南县| 罗甸县| 遂宁市| 上饶市| 茂名市| 中牟县| 七台河市| 杭州市| 卓资县| 固安县| 凤冈县| 政和县| 综艺| 沅陵县| 铜陵市| 韩城市| 泗阳县| 桐梓县| 锦州市| 章丘市| 卓尼县| 仲巴县| 顺义区| 无棣县| 中江县| 岳普湖县| 遵义市| 五台县| 顺昌县|