12DOM2和DOM3

12.1DOM变化

针对XML命名空间的变化

命名空间要使用xmlns特性来指定。在混合使用两种语言的情况下,命名空间的用处就非常大了。在DOM2级中,Node类型包含下列特定于命名空间的属性:localName、namespaceURL和prefix。Document类型包含了下列与命名空间有关的方法:createElementNS(namespaceURI,tagName)、createAttributeNSA(namespaceURIne,attributeName),getElementByTagNameNSA(namespaceURIne,tagName)。Element类型的变化。NameNodeMap类型的变化。

其他方面的变化(这些变化与XML命名空间无关,而是更倾向于确保API的可靠性及完整性)

DocumentType类型新增了3个属性:publicId、systemId和internalSubset。

document.importNode()方法从一个文档中取得一个节点,然后将其导入到另一个文档,使其成为这个文档结构的一部分。document.impementation对象有两个新的方法createDocumentType()和createDocument(),前者用于创建一个新的DocumentType节点,接收三个参数:文档类型名称、publicId、systemId。

Node类型的变化。isSupported()方法用于确定当前节点具有什么能力。isSameNode()指的是两个节点引用的是同一个对象。isEqualNode()指的是两个节点是相同的类型,具有相同的属性。

框架的变化。框架和内嵌框架分别用HTMLFrameElement和HTMLFrameElement表示,新属性contentDocument包含一个指针,指向表示框架内容的文档对象。

12.2样式

HTML中定义样式的方式有3种:通过<link/>元素包含外部样式表文件、使用<style/>元素定义嵌入式样式,以及使用style特性定义针对特定元素的样式。

访问元素的样式

任何支持style特性的HTML元素在JavaScript中都有一个对应的style属性,在style特性中指定的任何CSS属性都将表现为这个style对象的相应属性。

getComputedStyle()方法接受两个参数:要取得计算样式的元素和一个伪元素字符串。

操作样式表

CSS对象,CSSRule对象表示样式表汇总的每一条规则。

insertRule()方法用于向现有样式表中添加新规则。deleteRule()方法用于从样式表中删除规则。

元素大小

偏移量:offsetHeight、offsetWidth、offsetLeft和offsetTop。

客户区大小值得是元素内容及其内边距所占据的空间大小,clientHeight和clientWidth。客户区大小就是元素内部的空间大小,因此滚动条占用的空间不计算在内。

滚动大小指的是包含滚动内容的元素的大小,4个与滚动大小相关的属性:scrollHeight、scrollWidth、scrollLeft和scrollTop。

确定元素大小。getBoundaryClientRect()方法返回一个矩形对象,包含4个属性:left、top、right和bottom。

12.3遍历

NodeIterator

可以使用document.createNodeIterator(root,whatToShow,filter,entityReferenceExpansion)方法创建它的新实例。NodeIterator()类型的两个主要方法是nextNode()和previousNode()。

TreeWalker

TreeWalker包含nextNode()、previousNode()、parentNode()、firstChild()、lastChild()、nextSibling()和previousSibling()。用document.createTreeWalker()方法创建TreeWalker对象,也接受4个参数:作为遍历起点的根节点、要显示的节点类型、过滤器和一个表示是否扩展实体引用的布尔值。

12.4范围

DOM中的范围

可以使用createRange()来创建DOM范围。

要使用范围来选择文档中一部分,最简的方式就是使用selectNode()或selectNodeContents(),selectNode()方法选择整个节点,包括其子节点,而selectNodeContents()方法则只选择节点的子节点。

setStart()和setEnd()方法可以创建复杂的范围。deleteContents()能够从文档中删除范围所包含的内容。extractContents()方法会从文档中移除范围选区。cloneContents()创建范围对象的一个副本。insertNode()方法可以向范围选区的开始处插入一个节点。surroundContents()可以环绕范围插入内容。collapse()方法可以折叠范围,所谓折叠范围就是指范围中未选择文档的任何部分。compareBoundaryPoints()方法来确定多个范围是否有公共的边界(起点或终点)。cloneRange()方法可以复制范围。在使用完范围之后,最好是用detach()方法从创建范围的文档中分离出该范围。

IE8及更早版本中的范围

原文地址:https://www.cnblogs.com/dingzibetter/p/6402214.html