中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

IE 在創建 DOM 樹時會忽略某些空白字符
來源:易賢網 閱讀:1531 次 日期:2015-04-22 11:03:05
溫馨提示:易賢網小編為您整理了“IE 在創建 DOM 樹時會忽略某些空白字符”,方便廣大網友查閱!

標準參考

Node(節點)不僅包括元素節點,也包含文本節點、注釋節點、屬性節點等等,節點的類型可以使用 nodeType 來區分。

在 HTML 源代碼中,位于標簽之內以及標簽之間的文本(包括空白字符)將被創建為文本節點。

關于 Node 的更多信息,請參考 DOM-1 Core Interface Node 及 DOM-2 Core Interface Node 中的內容。

關于 Text 的更多信息,請參考 DOM-2 Core Interface Text 中的內容。

問題描述

IE 在創建 DOM 樹時,會忽略某些空白字符,因此會比其他瀏覽器少創建一些文本節點。反過來說,同樣的一篇文檔,其他瀏覽器將比 IE 多創建一些文本節點。

造成的影響

用戶針對 IE 設計的腳本如果使用節點對象的 nodeList、firstChild、lastChild、previousSibling 或 nextSibling 方法,可能會因為此問題而無法在其他瀏覽器中達到相同的目的,如腳本執行出錯,或對錯誤的目標對象進行了操作。

受影響的瀏覽器

IE6 IE7 IE8

問題分析

分析以下代碼:

...

<!--測試元素-->

<div id="a"> <div>div</div> <span id="b">span</span> <span>span</span> </div>

<!--腳本輸出-->

<pre>

<script>

//獲取父元素。

var $a=document.getElementById("a");

//測試 childNodes。

var nodeList=$a.childNodes;

var string="";

for(var i=0;i<nodeList.length;i++)string+=nodeList[i].nodeType;

document.writeln("nodeList: "+string);

//測試 firstChild。

document.writeln("firstChild: "+$a.firstChild.nodeType);

//測試 lastChild。

document.writeln("lastChild: "+$a.lastChild.nodeType);

//獲取子元素。

var $b=document.getElementById("b");

//測試 previousSibling。

document.writeln("previousSibling: "+$b.previousSibling.nodeType);

//測試 nextSibling。

document.writeln("nextSibling: "+$b.nextSibling.nodeType);

//顯示 innerHTML。

alert("|"+$a.innerHTML+"|");

</script>

</pre>

...

注意以上代碼,外層 DIV 標簽內的各標簽間有空格符。空格符被標記為紅色。

根據規范中的描述,腳本的預計輸出情況如下:

第一行輸出應該是“nodeList: 3131313”,因為該元素內的節點共有 7 個:3 個元素節點穿插在 4 個文本節點之間。

第二行輸出應該是“firstChild: 3”,第一個節點是文本節點。

第三行輸出應該是“lastChild: 3”,最后一個節點也是文本節點。

第四行輸出應該是“previousSibling: 3”。本次的目標元素(SPAN[id=b])的前一個節點是文本節點。

第五行輸出應該是“nextSibling: 3”,原因同上。

這段代碼在不同的瀏覽器環境中的表現:

IE其他瀏覽器

nodeList:113133131313

firstChild:13

lastChild:33

previousSibling:13

nextSibling:33

最后彈出 DIV[id=a] 元素的 innerHTML 為:

IE

|<DIV>div</DIV><SPAN id=b>span</SPAN> <SPAN>span</SPAN> |

其他瀏覽器:

| <div>div</div> <span id="b">span</span> <span>span</span> |

對原代碼中的“測試元素部分”進行改動后(將其中第二個 SPAN 更換為 DIV 元素):

...

<!--測試元素-->

<div id="a"> <div>div</div> <span id="b">span</span> <div>div</div> </div>

...

再次測試,各瀏覽器表現如下:

IE6 IE7 IE8Firefox Chrome Safari Opera

nodeList:11313131313

firstChild:13

lastChild:13

previousSibling:13

nextSibling:33

最后彈出 DIV[id=a] 元素的 innerHTML 為:

IE

|<DIV>div</DIV><SPAN id=b>span</SPAN>

<DIV>div</DIV>|

其他瀏覽器:

| <div>div</div> <span id="b">span</span> <div>div</div> |

可見:IE 在生成 DOM 樹時,忽略了一些空白字符,從而比其他瀏覽器少創建了一些文本節點。這導致在使用 nodeList、firstChild、lastChild、previousSibling 或 nextSibling 方法時,在 IE 和其他瀏覽器中得到的結果不一致。

解決方案

1. 沒有必要時盡量去掉各標簽之間的空白字符。

因為頁面腳本多是對“元素節點”進行操作,因此只要保證各元素之間沒有文本節點(即源代碼中的標簽之間沒有空白字符——包括空格符、換行符、制表符),就能使上述各屬性在各瀏覽器中的行為一致。如:

<div id="a"><div>div</div><span id="b">span</span><span>span</span></div>

另外,使用腳本創建并順次添加的元素,他們本身就是緊密相聯的,各元素之間并沒有文本節點,因此這種情況也不必擔心上述兼容性問題,如:

...

var $a=document.createElement("div");

...

var $b=document.createElement("div");

...

document.body.appendChild($a);

document.body.appendChild($b);

...

$a.nextSibling.className="foo";

...

上述代碼中,'$a.nextSibling' 在所有瀏覽器中都將是 $b。

2. 在獲取節點時做類型判斷。

無法保證各元素之間沒有文本節點時,則需要在針對節點的操作上添加類型判斷,如:

function getPreviousElementSibling ($target) {

var $previousNode = $target.previousSibling;

while ($previousNode && $previousNode.nodeType!=1) {

$previousNode = $previousNode.previousSibling;

}

return $previousNode;

}

另外,在非IE中,還可以使用 Element Traversal Specification 草案中提到的 previousElementSibling 和 nextElementSibling 獲取元素節點,例如:以 Element.nextElementSibling 取得與元素 Element 的相鄰的下一個元素節點。

更多信息請查看IT技術專欄

更多信息請查看腳本欄目
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美日本免费一区二区三区| 欧美精品网站| 黄色成人在线观看| 欧美性天天影院| 欧美色欧美亚洲另类二区| 欧美韩日一区二区三区| 欧美男人的天堂| 欧美日韩一区二区视频在线 | 亚洲国产经典视频| 亚洲人成7777| 一区二区三区四区五区视频 | 欧美 日韩 国产在线 | 亚洲一区二区三区视频播放| 亚洲一区二区不卡免费| 日韩小视频在线观看| 亚洲一区在线直播| 亚洲尤物在线| 性18欧美另类| 免费黄网站欧美| 欧美日韩国产小视频| 欧美日韩在线视频一区二区| 国产精品久久波多野结衣| 国产精品腿扒开做爽爽爽挤奶网站| 久久躁狠狠躁夜夜爽| 亚洲视频欧美视频| 亚洲午夜一二三区视频| 亚洲激情网址| 久久久女女女女999久久| 国产精品v欧美精品v日韩| 国产精品你懂的| 一本高清dvd不卡在线观看| 麻豆乱码国产一区二区三区| 欧美日韩黄色一区二区| 亚洲欧洲免费视频| 久久婷婷国产综合精品青草| 国产精品久久一卡二卡| 国产午夜精品一区二区三区视频 | 亚洲日韩视频| 老色鬼精品视频在线观看播放| 国产美女精品视频| 久久久夜色精品亚洲| 国产精品女人网站| 亚洲一二区在线| 韩日欧美一区二区| 久久蜜桃香蕉精品一区二区三区| 一区二区久久久久久| 国产精品久久网站| 欧美综合二区| 久久美女性网| 久久福利影视| 亚洲另类自拍| 国产精品亚洲综合一区在线观看 | 欧美日韩国产成人精品| 国产精品第三页| 欧美一级免费视频| 在线视频日韩精品| 欧美色123| 欧美精品99| 一本色道久久88综合亚洲精品ⅰ| 国产精品美女| 国产精品久久久久一区二区三区| 欧美国产日韩一区二区在线观看| 国产精品男人爽免费视频1| 99国产精品久久久久久久久久| 久久精品欧美| 欧美日韩一区二区精品| 亚洲国产成人av| 一片黄亚洲嫩模| 国产日产欧产精品推荐色 | 免费在线看一区| 国产综合一区二区| 裸体一区二区三区| 亚洲国产cao| 国产精品日韩欧美一区二区三区| 亚洲午夜av在线| 一区二区三区在线免费播放| 久久国产精品第一页| 性色av一区二区三区| 国产精品日韩欧美一区二区| 亚洲免费大片| 欧美精品播放| 亚洲另类视频| 欧美理论电影在线观看| 永久免费毛片在线播放不卡| 久久男人资源视频| 亚洲国产精品一区在线观看不卡| 91久久一区二区| 欧美大片在线观看一区| 今天的高清视频免费播放成人| 久久精品免费播放| 狠狠综合久久| 美腿丝袜亚洲色图| 亚洲人成人一区二区在线观看| 欧美精品福利在线| 亚洲第一精品在线| 欧美激情国产高清| 中国女人久久久| 激情五月婷婷综合| 欧美国产综合| 亚洲精品一区二区三| 国产精品va在线| 久久精品国产96久久久香蕉| 亚洲第一精品在线| 欧美精品七区| 日韩系列欧美系列| 欧美午夜三级| 久久精视频免费在线久久完整在线看 | 禁断一区二区三区在线| 久久久综合网站| 亚洲国产欧美久久| 久热综合在线亚洲精品| 国内精品伊人久久久久av一坑| 久久久久久久久久码影片| 国产亚洲一本大道中文在线| 麻豆久久婷婷| 亚洲欧美视频在线观看视频| 国产欧美视频在线观看| 国产丝袜一区二区三区| 免费欧美在线视频| 亚洲免费电影在线| 国产欧美亚洲日本| 欧美激情性爽国产精品17p| 一区二区免费看| 国内精品免费在线观看| 欧美黄色一级视频| 一区二区三区黄色| 亚洲剧情一区二区| 黄色亚洲在线| 国产欧美在线观看| 欧美视频导航| 蜜桃精品久久久久久久免费影院| 一本色道久久综合亚洲精品按摩| 国产亚洲a∨片在线观看| 国产综合久久久久久| 欧美精品自拍偷拍动漫精品| 欧美在线视频一区二区三区| 亚洲人成在线观看一区二区| 国产日韩欧美一区二区三区四区 | 国产精品久久999| 美女精品在线观看| 欧美一级午夜免费电影| 亚洲免费影视第一页| 亚洲精品一区在线观看香蕉| 激情六月婷婷综合| 国产日韩欧美精品| 麻豆成人在线观看| 亚洲欧洲精品一区二区三区| 欧美色播在线播放| 久久国产夜色精品鲁鲁99| 亚洲激情第一页| 国产精品久久77777| 久久综合九色综合欧美狠狠| 国产免费观看久久黄| 亚洲午夜小视频| 在线观看视频一区二区欧美日韩| 欧美日韩视频一区二区三区| 欧美中文字幕久久| 亚洲天堂免费在线观看视频| 在线精品国产成人综合| 国产精品美女久久| 欧美美女操人视频| 国产手机视频一区二区| 欧美视频中文在线看| 久久综合久色欧美综合狠狠| 久久动漫亚洲| 亚洲欧洲精品一区二区精品久久久| 亚洲欧美日韩精品久久久| 国产精品免费观看视频| 亚洲人成毛片在线播放女女| 欧美日本亚洲视频| 欧美在线播放一区| 欧美成人69av| 亚洲美女视频| 免费日韩av电影| 亚洲日本一区二区| 亚洲国产欧美日韩| 依依成人综合视频| 国产一区二区三区久久 | 国产欧美一区二区精品秋霞影院| 欧美日韩ab| 国产午夜精品久久久久久免费视| 一区国产精品| 在线精品视频一区二区| 一区二区三区产品免费精品久久75| 欧美精品午夜视频| 亚洲视频在线观看免费| 亚洲视频一二三| 日韩视频在线观看| 久久成人精品一区二区三区| 亚洲人成在线免费观看| 亚洲一区二区三区欧美| 亚洲精品久久久久久下一站 | 午夜久久久久久| 99精品视频一区| 亚洲小视频在线| 性色一区二区三区| 美女精品国产| 国产精品自拍网站| 一区二区三区亚洲| 午夜精品99久久免费|