第十章 DOM

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.①取得对的引用

var html = document . documentElement;

②取得对的引用

var body = document . body ;

③取得对的引用

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.浏览器处理位于外部的注释方面的差异:

       

①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,都会运行一次基于文档的查询。

你可能感兴趣的:(第十章 DOM)