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

IE 在創建 DOM 樹時會忽略某些空白字符
來源:易賢網 閱讀:1605 次 日期: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技術專欄

更多信息請查看腳本欄目
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點

版權所有:易賢網

中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
99精品视频中文字幕| 久久超碰97中文字幕| 久久久精品蜜桃| 精品久久久网站| 精品久久一二三区| 精品福利av导航| 欧美精品一区视频| 国产嫩草影院久久久久| 国产精品日韩精品欧美在线| 国产精品乱码一区二区三区软件| 亚洲国产电影在线观看| 中文字幕中文在线不卡住| 亚洲综合久久av| 亚洲成人av一区| 久久 天天综合| 成人一区二区三区中文字幕| 色综合激情五月| 欧美群妇大交群的观看方式| 欧美xxxx在线观看| 中文字幕av一区二区三区高| 一区二区在线观看免费| 日韩精品福利网| 国产精品99久久久久久有的能看 | 亚洲人123区| 亚洲国产日韩一区二区| 久久福利资源站| 成人a区在线观看| 欧美午夜片在线观看| 欧美大尺度电影在线| 中文一区在线播放| 视频一区中文字幕国产| 丰满白嫩尤物一区二区| 欧美色图第一页| 国产精品美女久久久久久久久久久| 洋洋成人永久网站入口| 激情另类小说区图片区视频区| www.激情成人| 精品欧美乱码久久久久久| 中文字幕不卡在线| 日本在线不卡视频| 91美女视频网站| 亚洲精品一区二区三区香蕉 | 亚洲国产一区二区在线播放| 久国产精品韩国三级视频| 91免费视频网址| 26uuu色噜噜精品一区| 亚洲韩国精品一区| 91小视频免费观看| 久久一区二区视频| 免费看黄色91| 欧美日韩卡一卡二| 亚洲免费观看在线观看| 国产精品一区二区在线观看网站| 欧美精品一级二级| 亚洲视频中文字幕| 福利一区二区在线观看| 欧美成人性战久久| 视频一区视频二区中文| 在线免费观看日韩欧美| 国产精品午夜在线观看| 国产一区二三区好的| 在线91免费看| 亚洲超碰精品一区二区| 色激情天天射综合网| 国产精品久久久久久亚洲毛片 | 国产日韩av一区二区| 免费视频一区二区| 欧美精品在线视频| 亚洲3atv精品一区二区三区| 色婷婷一区二区三区四区| 国产精品国产自产拍高清av| 国产福利一区二区三区视频| 精品欧美久久久| 国产激情视频一区二区在线观看| 日韩欧美国产电影| 久久99精品国产麻豆不卡| 欧美精品一区二区三区在线| 精久久久久久久久久久| 久久久久久亚洲综合影院红桃| 国产精品中文有码| 国产午夜精品一区二区三区嫩草| 国产乱色国产精品免费视频| 久久这里只有精品6| 成人久久18免费网站麻豆| 欧美国产精品一区| 97久久精品人人做人人爽| 一区二区三区不卡视频| 欧美高清精品3d| 久久国产三级精品| 日本一区二区三区电影| 99久久免费国产| 亚洲国产视频a| 欧美一区二区三区免费在线看| 久久99精品一区二区三区| 国产日韩欧美不卡| 在线免费观看日韩欧美| 久久精品国产亚洲5555| 国产欧美日韩精品a在线观看| 99久久99久久精品免费观看| 亚洲综合网站在线观看| 日韩欧美国产三级| 99久久久免费精品国产一区二区 | 欧美高清一级片在线| 激情综合色综合久久| 国产精品久久久久一区| 3751色影院一区二区三区| 国精产品一区一区三区mba桃花| 18成人在线观看| 日韩精品一区国产麻豆| www.亚洲色图.com| 日韩中文字幕亚洲一区二区va在线| 欧美videos中文字幕| 色综合久久88色综合天天| 韩国v欧美v亚洲v日本v| 亚洲欧洲成人av每日更新| 欧美美女激情18p| 成人黄页在线观看| 免费高清在线视频一区·| 亚洲丝袜美腿综合| 久久噜噜亚洲综合| 欧美三日本三级三级在线播放| 国产一区二三区好的| 亚洲成av人综合在线观看| 国产精品久久久久三级| 精品美女被调教视频大全网站| 色综合色狠狠天天综合色| 国产一区二区电影| 日本欧美一区二区在线观看| 专区另类欧美日韩| 国产精品久久午夜夜伦鲁鲁| 精品福利在线导航| 日韩欧美成人一区| 欧美日韩国产精选| 91国偷自产一区二区开放时间 | 欧美一区二区三区系列电影| 91亚洲精品久久久蜜桃网站| 国产在线精品一区二区 | 久久久国产综合精品女国产盗摄| 欧美视频一区二区三区在线观看| 成人av电影免费在线播放| 久久99久久99精品免视看婷婷| 人人爽香蕉精品| 午夜一区二区三区视频| 亚洲一区二区偷拍精品| 中文字幕一区二区三区色视频 | 亚洲三级小视频| 国产精品婷婷午夜在线观看| 久久久国产午夜精品| 日本一区二区三区国色天香| 国产性色一区二区| 中文字幕av资源一区| 国产精品区一区二区三区| 欧美韩日一区二区三区四区| 欧美激情中文不卡| 中文字幕一区二区三区乱码在线| 中文字幕成人在线观看| 国产精品毛片a∨一区二区三区| 国产精品电影一区二区| 国产精品成人网| 亚洲欧美日韩一区二区三区在线观看| 国产精品嫩草影院av蜜臀| ㊣最新国产の精品bt伙计久久| 亚洲欧美日韩中文播放| 亚洲国产aⅴ成人精品无吗| 日韩主播视频在线| 韩国av一区二区| 成人一级视频在线观看| 91蜜桃免费观看视频| 精品视频1区2区3区| 欧美大片在线观看一区| 久久精品视频免费| 亚洲色图制服诱惑| 无码av中文一区二区三区桃花岛| 久久99九九99精品| 97国产一区二区| 69av一区二区三区| 久久一日本道色综合| 亚洲欧美偷拍三级| 欧美片网站yy| 成人免费av资源| 99国产精品久| 欧美午夜不卡在线观看免费| 欧美日韩极品在线观看一区| 日韩亚洲欧美综合| 国产欧美精品国产国产专区| 亚洲伦理在线精品| 免费日本视频一区| av在线不卡电影| 欧美一区二区三区在线观看| 欧美激情一二三区| 免费不卡在线观看| 91亚洲资源网| 久久久久久久久久久久电影| 一区二区三区不卡在线观看| 国产精品自产自拍| 欧美精品一二三四| 亚洲日本韩国一区| 国产剧情一区在线| 777久久久精品| 亚洲免费伊人电影|