1.IE中的所有DOM对象都是以COM对象的形式实现的,意味着IE中的DOM对象与原生JavaScript对象的行为或活动特征并不一致。
2.Node接口在JavaScript中是作为Node类型实现的。除了IE外,在其他的浏览器中都可以访问到这个类型。
3. NodeList是一种类数组对象,用于保存一组有序的节点,并不是Array的实例。
4.所有节点都有的最后一个属性是ownerDucement,该属性指向表示整个文档的文档节点
5. IE8及更早版本与其他浏览器处理空白字符的方式不一样。IE9之前的版本不会为空白符创建节点。
6.IE在cloneNode()方法时会复制事件处理程序,所有在复制前最好先移除事件处理程序。
7.Document类型可以表示HTML页面或者其他基于XML的文档。最常见的应用时作为HTMLDocument实例的document对象
8.①取得对<html>的引用
var html = document . documentElement;
②取得对<body>的引用
var body = document . body ;
③取得对<!DOCTYPE>的引用
var doctype = document . doctype ;
9.浏览器对document . doctype的支持差别:
①IE8及之前的版本:把文档声明类型错误地解释为一个注释并把它当作Comment节点,而document . doctype的值始终为null;
②IE9+及Firefox:如果存在文档声明类型,则将其作为文档的第一个子节点;document . doctype是一个DocumentType节点,也可以通过document . firstChild或document . childNodes[0]访问;
③Safari、Chrome和Opera:如果存在文档声明类型,则将其解析,但不作为文档的子节点;document . doctype是一个DocumentType节点,但该节点不会出现在document . childNodes中
10.浏览器处理位于<html>外部的注释方面的差异:
<!-- 第一条注释 -->
<html>
<body></body>
</html>
<!-- 第二天注释 -->
①IE8及之前的版本、Safari 3.1及更高版本、Opera和Chrome:只为第一条注释创建节点,不为第二条注释创建节点。结果,第一条注释称为document . childNodes中的第一个子节点;
②IE9+:将第一条注释创建为document . childNodes中的第一个注释节点,也会将第二天注释创建为document . childNodes中的注释子节点;
③Safari 3.1之前的版本及Firefox:完全忽略这两条注释
11.由于跨域安全限制,来自不同子域的页面无法通过JavaScript通信。通过将document.domain设置为相同的值,这些页面就可以互相访问对方包含的JavaScript对象了。
12.浏览器对domain属性的限制:
①不能将domain属性设置为URL中不包含的域。
②若域名一开始是“松散的”,那么不能将它再设置为“紧绷的”。
// 假设页面来自于p2p . wrox . com域
document . domain = " wrox . com "; //松散的(成功)
document . domain = " p2p . wrox . com "; //紧绷的(失败)
13.①IE8及较低版本不区分ID的大小写;
②若页面中多个元素的ID值相同,getElementById()只返回文档中第一次出现的元素;
③IE7及较低版本中:name特性与给定ID匹配的表单元素也会被该方法返回。
14.属性的值与通过getAttribute()返回的值不同的两类特性:
①style:通过属性访问返回一个对象;通过getAttribute()访问返回CSS文本。
②onclick:通过属性访问返回一个JavaScript函数(若未指定,则返回null);
通过getAttribute()访问返回相应代码的字符串。
开发人员经常只使用对象的属性,只有在取得自定义特性值的情况下,才会使用getAttribute()方法
15.如果需要通过childNodes属性遍历子节点,那么在执行某项操作以前,通常要先检查nodeType属性。
16.应该尽量减少访问NodeList的次数,因为每次访问NodeList,都会运行一次基于文档的查询。