DOM(0)什么是DOM
2016-08-18 14:15
134 查看
什么是DOM?
通过“节点树”这一模型(M)来描述文档(D),树中每个节点代表着不同类型的节点对象(O),这些对象有一定数量的属性和方法(API)能够对节点和这课树的层次性进行操作。
DOM1定义了一个Node类型,所有的节点都继承这一类型,包括元素节点,也包含文本节点、注释节点、属性节点等等。
标准浏览器下,后台会根据HTML文档转化成DOM树,在 HTML 源代码中,位于标签之内以及标签之间的文本(包括空白字符 换行,空格……)将被创建为文本节点。
IE6 IE7 IE8存在问题,在将一个文档转换为DOM树的过程中,会忽略大部分的空白符文本,可能最终生成的DOM树比起其他浏览器来说会少一些节点,这也影响了NodeList,childNodes等操作。
可见:IE 在生成 DOM 树时,忽略了一些空白字符,从而比其他浏览器少创建了一些文本节点。这导致在使用 nodeList、chileNodes,firstChild、lastChild、previousSibling 或 nextSibling 方法时,在 IE 和其他浏览器中得到的结果不一致。
通过“节点树”这一模型(M)来描述文档(D),树中每个节点代表着不同类型的节点对象(O),这些对象有一定数量的属性和方法(API)能够对节点和这课树的层次性进行操作。
DOM1定义了一个Node类型,所有的节点都继承这一类型,包括元素节点,也包含文本节点、注释节点、属性节点等等。
标准浏览器下,后台会根据HTML文档转化成DOM树,在 HTML 源代码中,位于标签之内以及标签之间的文本(包括空白字符 换行,空格……)将被创建为文本节点。
IE6 IE7 IE8存在问题,在将一个文档转换为DOM树的过程中,会忽略大部分的空白符文本,可能最终生成的DOM树比起其他浏览器来说会少一些节点,这也影响了NodeList,childNodes等操作。
一个例子: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>testDOM</title> </head> <body> <!-- 每个元素之间都有空格--> <div id="a"> <div>div</div> <div id="b"></div> <span>span</span> </div> <script> var $a = document.getElementById('a'), nodeList = $a.childNodes, string = ''; /*测试childNodes*/ for(var i = 0; i < nodeList.length; i++){ string += nodeList[i].nodeType; } document.writeln("nodeList: "+string); /*标准下:nodeList: 3131313 IE678:nodeList: 1113 */ /*测试firstChild*/ document.writeln("firstChild: "+$a.firstChild.nodeType); /*标准下:firstChild: 3 IE678:firstChild: 1 */ var $b = document.getElementById('b'); /*测试nextSibling*/ document.writeln("nxtSibling: "+$b.nextSibling.nodeType); /*标准下:nxtSibling: 3 IE678:nxtSibling: 1 */ /*测试innerHTML*/ alert('|'+$a.innerHTML+'|'); /*标准下:| <div>div</div> <span id="b">span</span> <span>span</span> | IE678:|<DIV>div</DIV><SPAN id=b>span</SPAN> <SPAN>span</SPAN> | */ </script> </body> </html>
可见:IE 在生成 DOM 树时,忽略了一些空白字符,从而比其他浏览器少创建了一些文本节点。这导致在使用 nodeList、chileNodes,firstChild、lastChild、previousSibling 或 nextSibling 方法时,在 IE 和其他浏览器中得到的结果不一致。
相关文章推荐
- 什么是DOM
- 什么是DOM (转帖)
- 什么是DOM
- DOM与BOM分别是什么,有何关联
- 什么是DOM?DOM和JavaScript的关系
- javascript bom是什么及bom和dom的区别
- 什么是4D(DRG、DLG、DOM、DEM)数据?
- 什么是DOM?
- javascript bom是什么及bom和dom的区别
- 什么是DOM(Document Object Model)文档对象模型
- DOM是什么?有什么用处?js与DOM啥关系?
- DOM, DOCUMENT, BOM, WINDOW 有什么区别?
- [译]什么是Shadow Dom?
- 什么是DOM
- 00 JS-DOM之--什么是DOM和DOM对象
- 什么是DOM
- 什么是DOM
- DOM-based XSS 与 存储性XSS、反射型XSS有什么区别?
- DOM, DOCUMENT, BOM, WINDOW 有什么区别?
- 什么是DOM