TreeWalker - 表示文档子树的节点以及其中的位置
TreeWalker
对象表示文档子树的节点以及其中的位置。
可以使用 Document.createTreeWalker()
方法创建 TreeWalker
。
属性
此接口不继承任何属性。
TreeWalker.root
只读
返回一个 Node
,它表示创建 TreeWalker
时指定的根节点。
TreeWalker.whatToShow
只读
返回一个 unsigned long
,它是由常量组成的位掩码,该常量描述了必须显示的 Node
类型。不匹配的节点将被跳过,但是如果匹配,则可包括其子节点。可能的值为:
NodeFilter.SHOW_ALL
值为 -1
(这是 unsigned long
的最大值),表示显示所有节点。
NodeFilter.SHOW_ATTRIBUTE
值为 2
,显示属性 Attr
节点。仅当创建以 Attr
节点为根的 TreeWalker
时,这才有意义。在这种情况下,这意味着属性节点将出现在迭代或遍历的第一个位置。由于属性决不是其他节点的子级,因此在文档树上遍历时它们不会出现。
NodeFilter.SHOW_CDATA_SECTION
值为 8
,显示 CDATASection
节点。
NodeFilter.SHOW_COMMENT
值为 128
,显示 Comment
节点。
NodeFilter.SHOW_DOCUMENT
值为 256
,显示 Document
节点。
NodeFilter.SHOW_DOCUMENT_FRAGMENT
值为 1024
,显示 DocumentFragment
节点。
NodeFilter.SHOW_DOCUMENT_TYPE
值为 512
,显示 DocumentType
节点。
NodeFilter.SHOW_ELEMENT
值为 1
,显示 Element
节点。
NodeFilter.SHOW_ENTITY
值为 32
,显示 Entity
节点。仅当创建一个以 Entity
节点为根的 TreeWalker
时,这才有意义。在这种情况下,这意味着 Entity
节点将出现在遍历的第一个位置。由于实体不是文档树的一部分,所以在文档树上遍历时它们不会出现。
NodeFilter.SHOW_ENTITY_REFERENCE
值为 16
,显示 EntityReference
节点。
NodeFilter.SHOW_NOTATION
值为 2048
,显示 Notation
节点。仅当创建一个以 Notation
节点为根的 TreeWalker
时,这才有意义。在这种情况下,这意味着 Notation
节点将出现在遍历的第一个位置。由于实体不是文档树的一部分,所以在文档树上遍历时它们不会出现。
NodeFilter.SHOW_PROCESSING_INSTRUCTION
值为 64
,显示 ProcessingInstruction
节点。
NodeFilter.SHOW_TEXT
值为 4
,显示 Text
节点。
TreeWalker.filter
只读
返回用于选择相关节点的 NodeFilter
。
TreeWalker.expandEntityReferences
只读
一个 Boolean
的标志位,表示在丢弃 EntityReference
时,必须同时丢弃其整个子树。
TreeWalker.currentNode
一个 Node
,表示 TreeWalker
当前指向节点。
方法
此接口不继承任何方法。
注意:在
TreeWalker
的上下文中,如果节点存在于由whatToShow
和filter
参数确定的逻辑视图中,则该节点是可见的。(与该节点在屏幕上是否可见无关。)
TreeWalker.parentNode()
将当前 Node
移至文档顺序中的第一个可见祖先节点,并返回找到的节点。它还会将当前节点移到该节点。如果不存在这样的节点,或者在此之前在对象构造中定义的根节点之前,则返回 null
,并且当前节点不变。
TreeWalker.firstChild()
将当前 Node
移动到当前节点的第一个可见子节点,并返回找到的子节点。它还会将当前节点移到该子节点。如果没有这样的子节点,则返回 null
,并且当前节点不变。
TreeWalker.lastChild()
将当前 Node
移动到当前节点的最后一个可见子节点,并返回找到的子节点。它还会将当前节点移到该子节点。如果不存在这样的子节点,则返回 null
,并且当前节点不变。
TreeWalker.previousSibling()
将当前 Node
移至其上一个同级节点(如果有),并返回找到的同级节点。如果没有这样的节点,则返回 null
,并且当前节点不变。
TreeWalker.nextSibling()
将当前 Node
移至下一个同级节点(如果有),并返回找到的同级节点。如果没有这样的节点,则返回 null
,并且当前节点不变。
TreeWalker.previousNode()
将当前 Node
按文档顺序移动到上一个可见节点,然后返回找到的节点。它还会将当前节点移到该节点。如果不存在这样的节点,或者在此之前在对象构造中定义的根节点之前,则返回 null
,并且当前节点不变。
TreeWalker.nextNode()
将当前 Node
按文档顺序移动到下一个可见节点,然后返回找到的节点。它还会将当前节点移到该节点。如果没有这样的节点,则返回 null
,并且当前节点不变。
规范
规范 | 状态 | 备注 |
---|---|---|
DOM TreeWalker 的定义 |
现行的标准 | 移除了 expandEntityReferences 属性。 |
Document Object Model (DOM) Level 2 Traversal and Range Specification TreeWalker 的定义 |
已过时 | 初始定义。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 1 | 12 | 4 | 9 | 9 | 3 |
currentNode | 1 | 12 | 4 | 9 | 9 | 3 |
expandEntityReferences | 1 | 12 | 4 — 21 | 9 | 9 | 3 |
filter | 1 | 12 | 4 | 9 | 9 | 3 |
firstChild | 1 | 12 | 4 | 9 | 9 | 3 |
lastChild | 1 | 12 | 4 | 9 | 9 | 3 |
nextNode | 1 | 12 | 4 | 9 | 9 | 3 |
nextSibling | 1 | 12 | 4 | 9 | 9 | 3 |
parentNode | 1 | 12 | 4 | 9 | 9 | 3 |
previousNode | 1 | 12 | 4 | 9 | 9 | 3 |
previousSibling | 1 | 12 | 4 | 9 | 9 | 3 |
root | 1 | 12 | 4 | 9 | 9 | 3 |
whatToShow | 1 | 12 | 4 | 9 | 9 | 3 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 3 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
currentNode | 3 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
expandEntityReferences | 3 | 支持 | 未知 | 4 — 21 | 未知 | 10.1 | 3 |
filter | 3 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
firstChild | 3 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
lastChild | 3 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
nextNode | 3 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
nextSibling | 3 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
parentNode | 3 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
previousNode | 3 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
previousSibling | 3 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
root | 3 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
whatToShow | 3 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
相关链接
- 创建者方法:
Document.createTreeWalker()
。 - 相关接口:
NodeFilter
,NodeIterator
。