Node

Node 是一个接口,各种类型的 DOM API 对象会从这个接口继承。它允许我们使用相似的方式对待这些不同类型的对象;比如, 继承同一组方法,或者用同样的方式测试。

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

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

属性

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

Node.baseURI只读
返回一个表示base URL的DOMString。不同语言中的base URL的概念都不一样。 在HTML中,base URL表示协议和域名,以及一直到最后一个'/'之前的文件目录。
Node.baseURIObject 
(不适用于网页内容) 只读的 nsIURI 对象表示元素的base URI.
Node.childNodes只读
返回一个包含了该节点所有子节点的实时的NodeListNodeList 是动态变化的。如果该节点的子节点发生了变化,NodeList对象就会自动更新。 
Node.firstChild 只读
返回该节点的第一个子节点Node,如果该节点没有子节点则返回null
Node.isConnected只读
返回一个布尔值用来检测该节点是否已连接(直接或者间接)到一个上下文对象上,比如通常DOM情况下的Document对象,或者在shadow DOM情况下的ShadowRoot对象。
Node.lastChild 只读
返回该节点的最后一个子节点Node,如果该节点没有子节点则返回null
Node.nextSibling 只读
返回与该节点同级的下一个节点 Node,如果没有返回null
Node.nodeName 只读
返回一个包含该节点名字的DOMString。节点的名字的结构和节点类型不同。比如HTMLElement的名字跟它所关联的标签对应,就比如HTMLAudioElement的就是 'audio' ,Text节点对应的是 '#text' 还有Document节点对应的是 '#document'
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.localName 只读
返回一个表示元素名称的本土化表示方法的 DOMString

Note: 在Firefox 3.5以及更早的版本中, HTML 元素的 localName 属性的返回值都是大写的(XHTML 例外)。在后续版本中,这种情况就不存在了。无论是 HTML 还是 XHTML 中,均返回小写的 localName。

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

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

Node.nodePrincipal 已废弃 Gecko 46
返回节点优先级 nsIPrincipal
Node.prefix 只读
返回一个节点命名空间的前缀 DOMString , 当前缀不存在时返回 null
Node.rootNode 只读
返回一个DOM 树中顶层节点的  Node 对象,如果顶层节点不DOM 树中,则返回当前节点。该属性已被 Node.getRootNode() 方法所代替。

方法

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

Node.appendChild()
将指定的 childNode 参数作为最后一个子节点添加到当前节点。
如果参数引用了 DOM 树上的现有节点,则节点将从当前位置分离,并附加到新位置。
Node.cloneNode()
克隆一个 Node,并且可以选择是否克隆这个节点下的所有内容。默认情况下,节点下的内容会被克隆。
Node.compareDocumentPosition()
比较当前节点与文档中的另一节点的位置。
Node.contains()
返回一个 Boolean 布尔值,来表示传入的节点是否为该节点的后代节点。
Node.getRootNode()
返回上下文对象的根结点。如果shadow root节点存在的话,也可以在返回的节点中包含它。
Node.hasChildNodes()
返回一个Boolean 布尔值,来表示该元素是否包含有子节点。
Node.insertBefore()
在当前节点下增加一个子节点 Node,并使该子节点位于参考节点的前面。
Node.isDefaultNamespace()
返回一个 Boolean 类型值。接受一个命名空间 URI 作为参数,当参数所指代的命名空间是默认命名空间时返回 true,否则返回 false。
Node.isEqualNode()
返回一个 Boolean 类型值。当两个 node 节点为相同类型的节点且定义的数据点匹配时(即属性和属性值相同,节点值相同)返回 true,否则返回 false。
Node.isSameNode()
返回一个 Boolean 类型值。返回这两个节点的引用比较结果。
Node.lookupPrefix()
返回包含参数 URI 所对应的命名空间前缀的 DOMString,若不存在则返回 null。如果存在多个可匹配的前缀,则返回结果和浏览器具体实现有关。
Node.lookupNamespaceURI()
接受一个前缀,并返回前缀所对应节点命名空间 URI 。如果 URI 不存在则返回 null。传入 null 作为 prefix 参数将返回默认命名空间。
Node.normalize()
对该元素下的所有文本子节点进行整理,合并相邻的文本节点并清除空文本节点。
Node.removeChild()
移除当前节点的一个子节点。这个子节点必须存在于当前节点中。
Node.replaceChild()
对选定的节点,替换一个子节点 Node 为另外一个节点。

废弃的方法

Node.getFeature()
Node.getUserData()
允许用户从节点的 DOMUserData 获得数据。
Node.hasAttributes()
返回一个 Boolean 指定该元素是否存在某一属性。
Node.isSupported()
返回一个 Boolean 类型值,指定了当前 DOM 实现是否实现了某个规范所规定功能和该功能是否被规范所规定的的节点所支持。
Node.setUserData()
允许用户在一个节点上设置或移除 DOMUserData

例子

移除某个节点的所有子节点

function removeAllChildren(element){
  while(element.firstChild){
    element.removeChild(element.firstChild);
  }
}

使用示例

/* ... an alternative to document.body.innerHTML = "" ... */
removeAllChildren(document.body);

遍历所有子节点

下面这个函数使用递归的方式遍历一个节点的所有子节点(包括这个根节点自身)。

function eachNode(rootNode, callback){
	if(!callback){
		var nodes = [];
		eachNode(rootNode, function(node){
			nodes.push(node);
		});
		return nodes;
	}

	if(false === callback(rootNode))
		return false;

	if(rootNode.hasChildNodes()){
		var nodes = rootNode.childNodes;
		for(var i = 0, l = nodes.length; i < l; ++i)
			if(false === eachNode(nodes[i], callback))
				return;
	}
}

语法

eachNode(rootNode, callback);

描述

使用递归的方式对 rootNode 的所有后代节点执行回调函数(包括 rootNode 自身)

如果没有设定 callback,这函数会返回一个Array,包含 rootNode 和它的所有后代节点。

如果设定了 callback(回调函数),如果回调函数在调用中返回 Boolean false,则当前层级的遍历会中止,同时恢复上一层级的遍历。这个可以用来在找到需要的节点之后中断循环(比如用来查找包含指定文本的文本节点)

参数

rootNode
需要进行后代节点遍历的 Node 对象。
callback
一个可选的回调函数,接受一个节点作为唯一参数。如果没有设定, eachNode 返回一个包含了 rootNode 所有后代节点以及 rootNode 自身的Array

使用示例

下述例子会打印出ID为 "box"<div> 标签内的所有 <span> 标签的 textContent 属性:

<div id="box">
	<span>Foo</span>
	<span>Bar</span>
	<span>Baz</span>
</div>
var box = document.getElementById("box");
eachNode(box, function(node){
	if(null != node.textContent){
		console.log(node.textContent);
	}
});

用户终端上会显示如下字符:

"\n\t", "Foo", "\n\t", "Bar", "\n\t", "Baz"

Note: 空格是构成 Text节点的一部分,意味着缩进和换行在 Element 节点之间形成单独的 Text

真实案例

下述例子反应了 eachNode 函数是如何在真实场景中使用的:搜索网页中的文本。我们使用一个包装函数 grep 去执行搜索:

function grep(parentNode, pattern){
	var matches = [];
	var endScan = false;
	
	eachNode(parentNode, function(node){
		if(endScan)
			return false;
		
		// Ignore anything which isn't a text node
		if(node.nodeType !== Node.TEXT_NODE)
			return;

		if("string" === typeof pattern){
			if(-1 !== node.textContent.indexOf(pattern))
				matches.push(node);
		}
		else if(pattern.test(node.textContent)){
			if(!pattern.global){
				endScan = true;
				matches = node;
			}
			else matches.push(node);
		}
	});
	
	return matches;
}

例如:找到所有包含错别字的 Text

var typos = ["teh", "adn", "btu", "adress", "youre", "msitakes"];
var pattern = new RegExp("\\b(" + typos.join("|") + ")\\b", "gi");
var mistakes = grep(document.body, pattern);
console.log(mistakes);

规范

规范 状态 备注
DOM
Node
Living Standard 增加了以下方法: getRootNode()
DOM4
Node
Obsolete 移除了以下属性: attributes, namespaceURI, prefix, 和 localName.
移除了以下方法: isSupported(), hasAttributes(), getFeature(), setUserData(), and getUserData().
Document Object Model (DOM) Level 3 Core Specification
Node
Obsolete insertBefore(), replaceChild(), removeChild(), 和 appendChild() 方法在Document 上调用时遇到特定错误时会抛出一个新的异常(NOT_SUPPORTED_ERR)。
normalize() 方法已被修改,使得当设定特定的 DOMConfiguration  属性时, Text 节点也能被正确整理。
添加以下方法: compareDocumentPosition(), isSameNode(), lookupPrefix(), isDefaultNamespace(), lookupNamespaceURI(), isEqualNode(), getFeature(), setUserData(), and getUserData().
添加以下属性: baseURItextContent.
Document Object Model (DOM) Level 2 Core Specification
Node
Obsolete 修改 ownerDocument 属性,当访问 DocumentFragment 子节点的 ownerDocument 属性也会返回 null。
添加下列属性: namespaceURI, prefix, 和 localName.
添加下列方法: normalize(), isSupported()hasAttributes().
Document Object Model (DOM) Level 1 Specification
Node
Obsolete Initial definition.

浏览器兼容性

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
NodeChrome Full support 1
Notes
Full support 1
Notes
Notes WebKit and old versions of Blink incorrectly do not make Node inherit from EventTarget.
Edge Full support 12Firefox Full support 1IE Full support 5Opera Full support 7
Notes
Full support 7
Notes
Notes WebKit and old versions of Blink incorrectly do not make Node inherit from EventTarget.
Safari Full support 1.1
Notes
Full support 1.1
Notes
Notes WebKit and old versions of Blink incorrectly do not make Node inherit from EventTarget.
WebView Android Full support 1
Notes
Full support 1
Notes
Notes WebKit and old versions of Blink incorrectly do not make Node inherit from EventTarget.
Chrome Android Full support 18
Notes
Full support 18
Notes
Notes WebKit and old versions of Blink incorrectly do not make Node inherit from EventTarget.
Firefox Android Full support 4Opera Android Full support 10.1
Notes
Full support 10.1
Notes
Notes WebKit and old versions of Blink incorrectly do not make Node inherit from EventTarget.
Safari iOS Full support 1
Notes
Full support 1
Notes
Notes WebKit and old versions of Blink incorrectly do not make Node inherit from EventTarget.
Samsung Internet Android Full support 1.0
Notes
Full support 1.0
Notes
Notes WebKit and old versions of Blink incorrectly do not make Node inherit from EventTarget.
appendChildChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 5Opera Full support 7Safari Full support 1.1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0
baseURIChrome Full support YesEdge Full support 12Firefox Full support 1IE ? Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
baseURIObject
DeprecatedNon-standard
Chrome ? Edge ? Firefox ? IE ? Opera ? Safari ? WebView Android ? Chrome Android ? Firefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android ?
childNodesChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 5Opera Full support 7Safari Full support 1.2WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0
cloneNodeChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 6Opera Full support 7Safari Full support 1.1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0
compareDocumentPositionChrome Full support YesEdge Full support 12Firefox Full support 9IE Full support 9
Notes
Full support 9
Notes
Notes Only supports contains for elements
Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 9Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
containsChrome Full support 16Edge Full support 12Firefox Full support 9IE Full support 9
Notes
Full support 9
Notes
Notes Only supports contains for HTML elements and not for SVG elements.
Opera Full support 7Safari Full support 1.1WebView Android Full support ≤37Chrome Android Full support 18Firefox Android Full support 9Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0
firstChildChrome Full support YesEdge Full support 12Firefox Full support 1IE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
getFeature
DeprecatedNon-standard
Chrome No support NoEdge No support NoFirefox No support NoIE ? Opera ? Safari ? WebView Android No support NoChrome Android No support NoFirefox Android No support NoOpera Android ? Safari iOS ? Samsung Internet Android No support No
getRootNodeChrome Full support 54Edge Full support 79Firefox Full support 53IE No support NoOpera Full support 41Safari Full support 10.1WebView Android Full support 54Chrome Android Full support 54Firefox Android Full support 53Opera Android Full support 41Safari iOS Full support 10.3Samsung Internet Android Full support 6.0
getUserData
DeprecatedNon-standard
Chrome No support NoEdge No support NoFirefox No support 1 — 22IE ? Opera No support NoSafari No support NoWebView Android No support NoChrome Android No support NoFirefox Android No support 4 — 22Opera Android No support NoSafari iOS No support NoSamsung Internet Android No support No
hasAttributes
DeprecatedNon-standard
Chrome No support NoEdge No support 12 — 79Firefox No support NoIE ? Opera ? Safari ? WebView Android No support NoChrome Android No support NoFirefox Android No support NoOpera Android ? Safari iOS ? Samsung Internet Android No support No
hasChildNodesChrome Full support 1Edge Full support 12Firefox Full support YesIE Full support 9Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
insertBeforeChrome Full support 1Edge Full support 12Firefox Full support 3IE Full support 9Opera Full support 7Safari Full support 1.1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0
isConnectedChrome Full support 51Edge Full support 79Firefox Full support 53IE No support NoOpera Full support 38Safari Full support 10.1WebView Android Full support 51Chrome Android Full support 51Firefox Android Full support 45Opera Android Full support 41Safari iOS Full support 10.3Samsung Internet Android Full support 6.0
isDefaultNamespaceChrome Full support YesEdge Full support 12Firefox Full support YesIE ? Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
isEqualNodeChrome Full support 1Edge Full support 12Firefox Full support 2IE Full support 9Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
isSameNodeChrome Full support YesEdge Full support 12Firefox Full support 48
Full support 48
No support 1 — 10
IE ? Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 48
Full support 48
No support 4 — 10
Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
isSupportedChrome No support NoEdge No support NoFirefox No support 1 — 22IE ? Opera ? Safari ? WebView Android No support NoChrome Android No support NoFirefox Android No support 4 — 22Opera Android ? Safari iOS ? Samsung Internet Android No support No
lastChildChrome Full support YesEdge Full support 12Firefox Full support 1IE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 45Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
localName
DeprecatedNon-standard
Chrome No support ? — 46
Notes
No support ? — 46
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
Edge No support 12 — 79
Notes
No support 12 — 79
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
Firefox No support 1 — 48
Notes
No support 1 — 48
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
IE ? Opera ? Safari ? WebView Android No support ? — 46
Notes
No support ? — 46
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
Chrome Android No support ? — 46
Notes
No support ? — 46
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
Firefox Android Full support 45Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android No support ? — 5.0
Notes
No support ? — 5.0
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
lookupNamespaceURIChrome Full support YesEdge Full support 12Firefox Full support YesIE ? Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
lookupPrefixChrome Full support YesEdge Full support 12Firefox Full support YesIE ? Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
namespaceURI
DeprecatedNon-standard
Chrome No support ? — 46
Notes
No support ? — 46
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
Edge No support 12 — 79
Notes
No support 12 — 79
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
Firefox No support 1 — 48
Notes
No support 1 — 48
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
IE ? Opera ? Safari ? WebView Android No support ? — 46
Notes
No support ? — 46
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
Chrome Android No support ? — 46
Notes
No support ? — 46
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
Firefox Android Full support 45Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android No support ? — 5.0
Notes
No support ? — 5.0
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
nextSiblingChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 8Opera Full support 7Safari Full support 1.1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0
nodeNameChrome Full support YesEdge Full support 12Firefox Full support YesIE ? Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
nodePrincipal
ExperimentalNon-standard
Chrome No support ? — 46
Notes
No support ? — 46
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
Edge ? Firefox ? IE ? Opera ? Safari ? WebView Android No support ? — 46
Notes
No support ? — 46
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
Chrome Android No support ? — 46
Notes
No support ? — 46
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
Firefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android No support ? — 5.0
Notes
No support ? — 5.0
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
nodeTypeChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 6Opera Full support 7Safari Full support 1.1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0
nodeValueChrome Full support YesEdge Full support 12Firefox Full support YesIE ? Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
normalizeChrome Full support YesEdge Full support 12Firefox Full support YesIE ? Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
outerTextChrome No support NoEdge No support NoFirefox ? IE ? Opera No support NoSafari ? WebView Android No support NoChrome Android No support NoFirefox Android ? Opera Android No support NoSafari iOS ? Samsung Internet Android No support No
ownerDocumentChrome Full support YesEdge Full support 12Firefox Full support Yes
Full support Yes
Full support 9
Notes
Notes The ownerDocument of doctype nodes (that is, nodes for which Node.nodeType is Node.DOCUMENT_TYPE_NODE or 10) is no longer null. Instead, the ownerDocument is the document on which document.implementation.createDocumentType() was called.
IE Full support 9Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support Yes
Full support Yes
Full support 9
Notes
Notes The ownerDocument of doctype nodes (that is, nodes for which Node.nodeType is Node.DOCUMENT_TYPE_NODE or 10) is no longer null. Instead, the ownerDocument is the document on which document.implementation.createDocumentType() was called.
Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
parentElementChrome Full support 1Edge Full support 12Firefox Full support 9IE Full support 9
Notes
Full support 9
Notes
Notes Only supported on Element.
Opera Full support 7Safari Full support 1.1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 9Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0
parentNodeChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 6Opera Full support 7Safari Full support 1.1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0
prefix
DeprecatedNon-standard
Chrome No support NoEdge No support 12 — 79Firefox No support 1 — 48
Notes
No support 1 — 48
Notes
Notes This API was moved to the Element and Attr APIs according to the DOM4 standard.
Full support 5
Notes
Notes this property was read-write; starting with Firefox 5.0 it is read-only, following the specification.
IE Full support Yes
Notes
Full support Yes
Notes
Notes Only supported on Element.
Opera No support NoSafari Full support YesWebView Android No support NoChrome Android No support NoFirefox Android Full support 9Opera Android No support NoSafari iOS ? Samsung Internet Android No support No
previousSiblingChrome Full support YesEdge Full support 12Firefox Full support YesIE ? Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
removeChildChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 5Opera Full support 7Safari Full support 1.1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0
replaceChildChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 9Opera Full support 7Safari Full support 1.1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0
rootNode
DeprecatedNon-standard
Chrome No support NoEdge No support NoFirefox No support NoIE ? Opera No support NoSafari ? WebView Android No support NoChrome Android No support NoFirefox Android No support NoOpera Android No support NoSafari iOS ? Samsung Internet Android No support No
setUserData
DeprecatedNon-standard
Chrome No support NoEdge No support NoFirefox No support 1 — 22IE ? Opera No support NoSafari No support NoWebView Android No support NoChrome Android No support NoFirefox Android No support 4 — 22Opera Android No support NoSafari iOS No support NoSamsung Internet Android No support No
textContentChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 9Opera Full support 9Safari Full support 3WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
Experimental. Expect behavior to change in the future.
Experimental. Expect behavior to change in the future.
Non-standard. Expect poor cross-browser support.
Non-standard. Expect poor cross-browser support.
Deprecated. Not for use in new websites.
Deprecated. Not for use in new websites.
See implementation notes.
See implementation notes.