这篇翻译不完整。请帮忙从英语翻译这篇文章

Node是一个接口,许多DOM类型从这个接口继承,并允许类似地处理(或测试)这些各种类型。

以下接口都从Node继承其方法和属性:

Document, Element, CharacterData (which Text, Comment, and CDATASection inherit), ProcessingInstruction, DocumentFragment, DocumentType, Notation, Entity, EntityReference

在方法和属性不相关的特定情况下,这些接口可能返回null。它们可能会抛出异常 - 例如,当将子节点添加到不允许子节点存在的节点时。

属性

从其父类EventTarget[1]继承属性。

Node.baseURI只读
            返回一个表示base URL的DOMString。不同语言中的base URL的概念都不一样。 在HTML中,base URL表示协议和域名,以及一直到最后一个'/'之前的文件目录。
Node.baseURIObject
(不适用于网页内容) 只读的 nsIURI 对象表示元素的base URI.
Node.childNodes 只读
返回一个包含了该节点所有子节点的实时的NodeListNodeList 是“实时的”意思是,如果该节点的子节点发生了变化,NodeList对象就会自动更新。 
Node.firstChild 只读
返回该节点的第一个子节点,如果该节点没有子节点则返回null
Node.lastChild 只读
返回该节点的最后一个子节点,如果该节点没有子节点则返回null
Node.nextSibling 只读
返回与该节点同级的下一个节点,如果没有返回null
Node.nodeName 只读
返回一个包含该节点名字的DOMString。The structure of the name will differ with the node type. E.g. An HTMLElement will contain the name of the corresponding tag, like 'audio' for an HTMLAudioElement, a Text node will have the '#text' string, or a Document node will have the '#document' string.
Node.nodePrincipal
A nsIPrincipal representing the node principal.
Node.nodeType只读

返回一个与该节点类型对应的无符号短整型的值,可能的值如下:

Name Value
ELEMENT_NODE 1
ATTRIBUTE_NODE  2
TEXT_NODE 3
CDATA_SECTION_NODE  4
ENTITY_REFERENCE_NODE  5
ENTITY_NODE  6
PROCESSING_INSTRUCTION_NODE 7
COMMENT_NODE 8
DOCUMENT_NODE 9
DOCUMENT_TYPE_NODE 10
DOCUMENT_FRAGMENT_NODE 11
NOTATION_NODE  12
Node.nodeValue
返回或设置当前节点的值。
Node.ownerDocument 只读
返回这个元素属于的 Document对象 。 如果没有Document对象与之关联,返回null。
Node.parentNode 只读
返回一个当前结点 Node的父节点 。如果没有这样的结点,,比如说像这个节点是树结构的顶端或者没有插入一棵树中, 这个属性返回null。
Node.parentElement 只读
返回一个当前节点的父节点 Element 。 如果当前节点没有父节点或者说父节点不是一个元素(Element), 这个属性返回null。
Node.previousSibling 只读
返回一个当前节点同辈的前一个结点( Node) ,或者返回null(如果不存在这样的一个节点的话)。
Node.textContent
获取或设置一个标签内所有子结点及其后代的文本内容。

不推荐的属性

Node.rootNode 只读
Returns a Node object representing the topmost node in the tree, or the current node if it's the topmost node in the tree. This has been replaced by Node.getRootNode().

废弃的属性

Node.localName 只读
Returns a DOMString representing the local part of the qualified name of an element.

Note: 在Firefox 3.5以及更早的版本中, the property upper-cases the local name for HTML elements (but not XHTML elements). In later versions, this does not happen, so the property is in lower case for both HTML and XHTML.

Node.namespaceURI 只读
该节点命名空间的URL,如果没有命名空间则为null

Note: 在Firefox 3.5以及更早的版本中, HTML 的元素都没有命名空间. 而在最新的版本中, 无论是 HTML 还是 XML 文档树 ,所有元素的命名空间统一为 https://www.w3.org/1999/xhtml/ .

Node.prefix 只读
Is a DOMString representing the namespace prefix of the node, or null if no prefix is specified.

方法

从其父类EventTarget[1]继承方法。

Node.appendChild()
Adds the specified childNode argument as the last child to the current node.If the argument referenced an existing node on the DOM tree, the node will be detached from its current position and attached at the new position.

Node.cloneNode()
Clone a Node, and optionally, all of its contents. By default, it clones the content of the node.
Node.compareDocumentPosition()
Compares the position of the current node against another node in any other document.
Node.contains()
Returns a Boolean value indicating whether a node is a descendant of a given node or not.
Node.getRootNode()
Returns the context object's root which optionally includes the shadow root if it is available. 
Node.hasChildNodes()
Returns a Boolean indicating if the element has any child nodes, or not.
Node.insertBefore()
Inserts a Node before the reference node as a child of the current node.
Node.isDefaultNamespace()
Accepts a namespace URI as an argument and returns a Boolean with a value of true if the namespace is the default namespace on the given node or false if not.
Node.isEqualNode()
Returns a Boolean which indicates whether or not two nodes are of the same type and all their defining data points match.
Node.isSameNode()
Returns a Boolean value indicating whether or not the two nodes are the same (that is, they reference the same object).
Node.lookupPrefix()
Returns a DOMString containing the prefix for a given namespace URI, if present, and null if not. When multiple prefixes are possible, the result is implementation-dependent.
Node.lookupNamespaceURI()
Accepts a prefix and returns the namespace URI associated with it on the given node if found (and null if not). Supplying null for the prefix will return the default namespace.
Node.normalize()
Clean up all the text nodes under this element (merge adjacent, remove empty).
Node.removeChild()
Removes a child node from the current element, which must be a child of the current node.
Node.replaceChild()
Replaces one child Node of the current one with the second one given in parameter.

废弃的方法

Node.getFeature()
x
Node.getUserData()
Allows a user to get some DOMUserData from the node.
Node.hasAttributes()
Returns a Boolean indicating if the element has any attributes, or not.
Node.isSupported()
Returns a Boolean flag containing the result of a test whether the DOM implementation implements a specific feature and this feature is supported by the specific node.
Node.setUserData()
Allows a user to attach, or remove, DOMUserData to the node.

示例

浏览所有子节点

下面这个函数使用递归的方式遍历一个节点的所有子节点,并对他们执行一个回调函数(包括这个父节点本身)。

function DOMComb (oParent, oCallback) {
  if (oParent.hasChildNodes()) {
    for (var oNode = oParent.firstChild; oNode; oNode = oNode.nextSibling) {
      DOMComb(oNode, oCallback);
    }
  }
  oCallback.call(oParent);
}

语法

DOMComb(parentNode, callbackFunction);

描述

使用递归遍历parentNode的所有子节点(包括这个parentNode本身),并对他们(作为 this 对象)执行callbackFunction

参数

parentNode
父节点 (Node Object)。
callbackFunction
回调函数 (Function)。

实例

下面的例子会使用console.log打印文档主体的文本内容。

function printContent () {
  if (this.nodeValue) { console.log(this.nodeValue); }
}

onload = function () {
  DOMComb(document.body, printContent);
};

规范

规范

Specification Status Comment
DOM
Node
Living Standard Removed the following properties: attributesnamespaceURIprefix, and localName.
Removed the following methods: isSupported()hasAttributes()getFeature()setUserData(), and getUserData().
Document Object Model (DOM) Level 3 Core Specification
Node
Obsolete 这些方法: insertBefore()replaceChild()removeChild(), and appendChild() 返回不止一种错误 (NOT_SUPPORTED_ERR) if called on a Document.
The normalize() method has been modified so that Text node can also be normalized if the proper DOMConfiguration flag is set.
Added the following methods: compareDocumentPosition()isSameNode()lookupPrefix()isDefaultNamespace()lookupNamespaceURI()isEqualNode()getFeature()setUserData(), and getUserData().
Added the following properties: baseURI and textContent.
Document Object Model (DOM) Level 2 Core Specification
Node
Obsolete The ownerDocument property was slightly modified so that DocumentFragment also returns null.
Added the following properties: namespaceURIprefix, and localName.
Added the following methods: normalize()isSupported() and hasAttributes().
Document Object Model (DOM) Level 1 Specification
Node
Obsolete 初始化定义

浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

未实现22.0 (22.0)

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes)[1] (Yes) 1.0 (1.7 or earlier) (Yes) (Yes)[1] (Yes)[1]
getFeature() 未实现 ? 1.0 (1.7 or earlier)
未实现7.0 (7.0)
? 未实现 未实现
getUserData()setUserData()and hasAttributes() 未实现 ? 1.0 (1.7 or earlier)
未实现22.0 (22.0)
? 未实现 未实现
isSameNode() (Yes) ? 1.0 (1.7 or earlier)
Removed in 10 (10)
Returned in 48 (48)
? 未实现 未实现
isSupported() 未实现 ? 1.0 (1.7 or earlier) ? ? ? ?
attributes 未实现 ? 1.0 (1.7 or earlier)
未实现22.0 (22.0)[2]
未实现 未实现 未实现
rootNode() ? ? CompatGeckoDesktop(48)}} ? ? ?
namespaceURIlocalNameprefix  (Yes)
未实现46.0[3]
? (Yes)
未实现48.0[3]
? ? ?
getRootNode 54.0 ? ? ? 41 ?
Feature Android Android Webview Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support ? (Yes)[1] (Yes) 1.0 (1.0) (Yes) (Yes)[1] (Yes)[1] (Yes)[1]
getFeature() 未实现 未实现 ? 1.0 (1.0)
未实现7.0 (7.0)
? 未实现 未实现 未实现
getUserData()setUserData()and hasAttributes() 未实现 未实现 ? ? ? ? ? 未实现
isSameNode() ? (Yes) ?

1.0 (1.7 or earlier)
Removed in 10 (10)
Returned in 48 (48)

? ? ? (Yes)
isSupported() ? 未实现 ? ? ? ? ? 未实现
attributes ? 未实现 ? ? ? ? ? 未实现
rootNode() ? 未实现 ? 48.0 (48) ? ? ? 未实现
namespaceURIlocalNameprefix  ? 未实现 ? (Yes)
未实现48.0[3]
? ? ? 未实现
getRootNode() 未实现 54.0 ? ? ? 41 ? 54.0

[1] 在WebKit内核和老版本的Blink内核中 Node 并不继承于EventTarget

[2] 在Gecko 22.0中 (Firefox 22.0 / Thunderbird 22.0 / SeaMonkey 2.19)  attributes 属性被移动到Element中.

[3] 在DOM4标准中,这些属性被移动到了 ElementAttr API中了 。

文档标签和贡献者

标签: 
最后编辑者: gitdust,