Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Revision 1118577 of Element

  • Revision slug: Web/API/Element
  • Revision title: Element
  • Revision id: 1118577
  • Created:
  • Creator: jpmedley
  • Is current revision? No
  • Comment

Revision Content

{{ APIRef("DOM") }}

The Element interface represents an object of a {{domxref("Document")}}. This interface describes methods and properties common to all kinds of elements. Specific behaviors are described in interfaces which inherit from Element but add additional functionality. For example, the {{domxref("HTMLElement")}} interface is the base interface for HTML elements, while the {{domxref("SVGElement")}} interface is the basis for all SVG elements.

Languages outside the realm of the Web platform, like XUL through the XULElement interface, also implement it.

Properties

Inherits properties from its parents {{domxref("Node")}}, and its own parent, {{domxref("EventTarget")}}, and implements those of {{domxref("ParentNode")}}, {{domxref("ChildNode")}}, {{domxref("NonDocumentTypeChildNode")}}, and {{domxref("Animatable")}}.

{{ domxref("Element.assignedSlot")}} {{readOnlyInline}}
Returns the {{domxref("HTMLSlotElement")}} interface associated with the element.
{{ domxref("Element.attributes") }} {{readOnlyInline}}
Returns a {{ domxref("NamedNodeMap") }} object that cotaining the assigned attributes of the corresponding HTML element.
{{ domxref("Element.classList") }} {{readOnlyInline}}
Returns a {{ domxref("DOMTokenList") }} containing the list of class attributes.
{{ domxref("Element.className") }}
Is a {{domxref("DOMString")}} representing the class of the element.
{{ domxref("Element.clientHeight") }} {{experimental_inline}} {{readOnlyInline}}
Returns a {{jsxref("Number")}} representing the inner height of the element.
{{ domxref("Element.clientLeft") }} {{experimental_inline}} {{readOnlyInline}}
Returns a {{jsxref("Number")}} representing the width of the left border of the element.
{{ domxref("Element.clientTop") }} {{experimental_inline}} {{readOnlyInline}}
Returns a {{jsxref("Number")}} representing the width of the top border of the element.
{{ domxref("Element.clientWidth") }} {{experimental_inline}} {{readOnlyInline}}
Returns a {{jsxref("Number")}} representing the inner width of the element.
{{ domxref("Element.id") }}
Is a {{domxref("DOMString")}} representing the id of the element.
{{ domxref("Element.innerHTML") }}
Is a {{domxref("DOMString")}} representing the markup of the element's content.
{{ domxref("Element.localName") }} {{readOnlyInline}}
A {{domxref("DOMString")}} representing the local part of the qualified name of the element.
{{domxref("Element.namespaceURI")}} {{readonlyInline}}
The namespace URI of the element, or null if it is no namespace.

Note: In Firefox 3.5 and earlier, HTML elements are in no namespace. In later versions, HTML elements are in the https://www.w3.org/1999/xhtml namespace in both HTML and XML trees. {{ gecko_minversion_inline("1.9.2") }}

{{ domxref("NonDocumentTypeChildNode.nextElementSibling") }} {{readOnlyInline}}
Is a {{ domxref("Element") }}, the element immediately following the given one in the tree, or null if there's no sibling node.
{{ domxref("Element.outerHTML") }} {{experimental_inline}}
Is a {{domxref("DOMString")}} representing the markup of the element including its content. When used as a setter, replaces the element with nodes parsed from the given string.
{{ domxref("Element.prefix") }} {{readOnlyInline}}
A {{domxref("DOMString")}} representing the namespace prefix of the element, or null if no prefix is specified.
{{ domxref("NonDocumentTypeChildNode.previousElementSibling") }} {{readOnlyInline}}
Is a {{ domxref("Element") }}, the element immediately preceding the given one in the tree, or null if there is no sibling element.
{{ domxref("Element.scrollHeight") }} {{experimental_inline}} {{readOnlyInline}}
Returns a {{jsxref("Number")}} representing the scroll view height of an element.
{{ domxref("Element.scrollLeft") }} {{experimental_inline}}
Is a {{jsxref("Number")}} representing the left scroll offset of the element.
{{ domxref("Element.scrollLeftMax") }} {{non-standard_inline}} {{readOnlyInline}}
Returns a {{jsxref("Number")}} representing the maximum left scroll offset possible for the element.
{{ domxref("Element.scrollTop") }} {{experimental_inline}}
Is a {{jsxref("Number")}} representing the top scroll offset the an element.
{{ domxref("Element.scrollTopMax") }} {{non-standard_inline}} {{readOnlyInline}}
Returns a {{jsxref("Number")}} representing the maximum top scroll offset possible for the element.
{{ domxref("Element.scrollWidth") }} {{experimental_inline}} {{readOnlyInline}}
Returns a {{jsxref("Number")}} representing the scroll view width of the element.
{{domxref("Element.shadowRoot") }} {{experimental_inline}} {{readOnlyInline}}
Returns the youngest shadow root that is hosted by the element.
{{domxref("Element.slot")}} {{experimental_inline}}
Returns the name of the shadow DOM slot attatched to the element. A slot is a placeholder inside a web component that users can fill with their own markup.
{{domxref("Element.tabStop")}} {{non-standard_inline}}
Is a {{jsxref("Boolean")}} indicating if the element can receive input focus via the tab key.
{{ domxref("Element.tagName") }} {{readOnlyInline}}
Returns a {{domxref("String")}} with the name of the tag for the given element.
{{ domxref("Element.undoManager")}} {{experimental_inline}} {{readOnlyInline}}
Returns the {{domxref("UndoManager")}} associated with the element.
{{ domxref("Element.undoScope")}} {{experimental_inline}}
Is a {{jsxref("Boolean")}} indicating if the element is an undo scope host, or not.

Note: DOM Level 3 defined namespaceURI, localName and prefix on the {{domxref("Node")}} interface. In DOM4 they were moved to Element.

This change is implemented in Chrome since version 46.0 and Firefox since version 48.0.

Event handlers

{{ domxref("Element.ongotpointercapture") }}
Returns the event handler for the {{event("gotpointercapture")}} event type.
{{ domxref("Element.onlostpointercapture") }}
Returns the event handler for the {{event("lostpointercapture")}} event type.
{{ domxref("Element.onwheel") }} {{ non-standard_inline() }}
Returns the event handling code for the {{ domeventxref("wheel") }} event.

Methods

Inherits methods from its parents {{domxref("Node")}}, and its own parent, {{domxref("EventTarget")}}, and implements those of {{domxref("ParentNode")}}, {{domxref("ChildNode")}}, {{domxref("NonDocumentTypeChildNode")}}, and {{domxref("Animatable")}}.

{{ domxref("EventTarget.addEventListener()") }}
Registers an event handler to a specific event type on the element.
{{domxref("Element.attachShadow()")}} {{experimental_inline}}
Attatches a shadow DOM tree to the specified element and returns a reference to its {{domxref("ShadowRoot")}}.
{{domxref("Element.animate()")}} {{experimental_inline}}
A shortcut method to create and run an animation on an element. Returns the created Animation object instance.
{{ domxref("Element.closest()")}} {{experimental_inline}}
Returns the {{domxref("Element")}}, descendant of this element (or this element itself), that is the closest ancestor of the elements selected by the selectors given in parameter.
{{ domxref("Element.createShadowRoot()")}} {{experimental_inline}} {{deprecated_inline()}}
Creates a shadow DOM on on the element, turning it into a shadow host. Returns a {{domxref("ShadowRoot")}}.
{{ domxref("EventTarget.dispatchEvent()") }}
Dispatches an event to this node in the DOM and returns a {{jsxref("Boolean")}} that indicates that at least one handler has not canceled it.
{{domxref("Element.find()")}}{{experimental_inline}}
...
{{domxref("Element.findAll()")}}{{experimental_inline}}
...
{{domxref("Element.getAnimations()")}} {{experimental_inline}}
Returns an array of Animation objects currently active on the element.
{{ domxref("Element.getAttribute()") }}
Retrieves the value of the named attribute from the current node and returns it as an {{jsxref("Object")}}.
{{ domxref("Element.getAttributeNames()") }}
 
{{ domxref("Element.getAttributeNS()") }}
Retrieves the value of the attribute with the specified name and namespace, from the current node and returns it as an {{jsxref("Object")}}.
{{ domxref("Element.getAttributeNode()") }} {{obsolete_inline}}
Retrieves the node representation of the named attribute from the current node and returns it as an {{ domxref("Attr") }}.
{{ domxref("Element.getAttributeNodeNS()") }} {{obsolete_inline}}
Retrieves the node representation of the attribute with the specified name and namespace, from the current node and returns it as an {{ domxref("Attr") }}.
{{ domxref("Element.getBoundingClientRect()") }}
...
{{ domxref("Element.getClientRects()") }}
Returns a collection of rectangles that indicate the bounding rectangles for each line of text in a client.
{{domxref("Element.getDestinationInsertionPoints()")}} {{experimental_inline}}
{{ domxref("Element.getElementsByClassName()") }}
Returns a live {{ domxref("HTMLCollection") }} that contains all descendant of the current element that posses the list of classes given in parameter.
{{ domxref("Element.getElementsByTagName()") }}
Returns a live {{ domxref("HTMLCollection") }} containing all descendant elements, of a particular tag name, from the current element.
{{ domxref("Element.getElementsByTagNameNS()") }}
Returns a live {{ domxref("HTMLCollection") }} containing all descendant elements, of a particular tag name and namespace, from the current element.
{{ domxref("Element.hasAttribute()") }}
Returns a {{jsxref("Boolean")}} indicating if the element has the specified attribute or not.
{{ domxref("Element.hasAttributeNS()") }}
Returns a {{jsxref("Boolean")}} indicating if the element has the specified attribute, in the specified namespace, or not.
{{ domxref("Element.hasAttributes()") }}
Returns a {{jsxref("Boolean")}} indicating if the element has one or more HTML attributes present.
{{ domxref("Element.insertAdjacentElement") }} {{experimental_inline}}
Inserts a given element node at a given position relative to the element it is invoked upon.
{{ domxref("Element.insertAdjacentHTML") }} {{experimental_inline}}
Parses the text as HTML or XML and inserts the resulting nodes into the tree in the position given.
{{ domxref("Element.insertAdjacentText") }} {{experimental_inline}}
Inserts a given text node at a given position relative to the element it is invoked upon.
{{ domxref("Element.matches()") }} {{experimental_inline}}
Returns a {{jsxref("Boolean")}} indicating whether or not the element would be selected by the specified selector string.
{{ domxref("Element.querySelector()") }}
Returns the first {{ domxref("Node") }} which matches the specified selector string relative to the element.
{{ domxref("Element.querySelectorAll") }}
Returns a {{ domxref("NodeList") }} of nodes which match the specified selector string relative to the element.
{{ domxref("Element.releasePointerCapture")}}
Releases (stops) pointer capture that was previously set for a specific {{domxref("PointerEvent","pointer event")}}.
{{domxref("ChildNode.remove()")}} {{experimental_inline}}
Removes the element from the children list of its parent.
{{ domxref("Element.removeAttribute()") }}
Removes the named attribute from the current node.
{{ domxref("Element.removeAttributeNS()") }}
Removes the attribute with the specified name and namespace, from the current node.
{{ domxref("Element.removeAttributeNode()") }} {{obsolete_inline}}
Removes the node representation of the named attribute from the current node.
{{ domxref("EventTarget.removeEventListener()") }}
Removes an event listener from the element.
{{ domxref("Element.requestFullscreen()") }} {{experimental_inline}}
Asynchronously asks the browser to make the element full-screen.
{{ domxref("Element.requestPointerLock()")}} {{experimental_inline}}
Allows to asynchronously ask for the pointer to be locked on the given element.
{{ domxref("Element.scrollIntoView()") }} {{experimental_inline}}
Scrolls the page until the element gets into the view.
{{ domxref("Element.setAttribute()") }}
Sets the value of a named attribute of the current node.
{{ domxref("Element.setAttributeNS()") }}
Sets the value of the attribute with the specified name and namespace, from the current node.
{{ domxref("Element.setAttributeNode()") }} {{obsolete_inline}}
Sets the node representation of the named attribute from the current node.
{{ domxref("Element.setAttributeNodeNS()") }} {{obsolete_inline}}
Setw the node representation of the attribute with the specified name and namespace, from the current node.
{{ domxref("Element.setCapture()") }} {{non-standard_inline}}
Sets up mouse event capture, redirecting all mouse events to this element.
{{domxref("Element.setPointerCapture()")}}
Designates a specific element as the capture target of future {{domxref("PointerEvent","pointer events")}}.

Specifications

Specification Status Comment
{{SpecName('Shadow DOM')}} {{Spec2('Shadow DOM')}}  
{{SpecName("Web Animations", '', '')}} {{Spec2("Web Animations")}} Added the getAnimations() method.
{{SpecName('Undo Manager', '', 'Element')}} {{Spec2('Undo Manager')}} Added the undoScope and undoManager properties.
{{SpecName('Pointer Events 2', '#extensions-to-the-element-interface', 'Element')}} {{Spec2('Pointer Events 2')}} Added the following event handlers: ongotpointercapture and onlostpointercapture.
Added the following methods: setPointerCapture() and releasePointerCapture().
{{SpecName('Pointer Events', '#extensions-to-the-element-interface', 'Element')}} {{Spec2('Pointer Events')}} Added the following event handlers: ongotpointercapture and onlostpointercapture.
Added the following methods: setPointerCapture() and releasePointerCapture().
{{SpecName('Selectors API Level 2', '#interface-definitions', 'Element')}} {{Spec2('Selectors API Level 2')}} Added the following methods: matches() (implemented as mozMatchesSelector()), find(), findAll().
{{SpecName('Selectors API Level 1', '#interface-definitions', 'Element')}} {{Spec2('Selectors API Level 1')}} Added the following methods: querySelector() and querySelectorAll().
{{SpecName('Pointer Lock', 'index.html#element-interface', 'Element')}} {{Spec2('Pointer Lock')}} Added the requestPointerLock() method.
{{SpecName('Fullscreen', '#api', 'Element')}} {{Spec2('Fullscreen')}} Added the requestFullscreen() method.
{{SpecName('DOM Parsing', '#extensions-to-the-element-interface', 'Element')}} {{Spec2('DOM Parsing')}} Added the following properties: innerHTML, and outerHTML.
Added the following method: insertAdjacentHTML().
{{SpecName('CSSOM View', '#extensions-to-the-element-interface', 'Element')}} {{Spec2('CSSOM View')}} Added the following properties: scrollTop, scrollLeft, scrollWidth, scrollHeight, clientTop, clientLeft, clientWidth, and clientHeight.
Added the following methods: getClientRects(), getBoundingClientRect(), and scrollIntoView().
{{SpecName('Element Traversal', '#ecmascript-bindings', 'Element')}} {{Spec2('Element Traversal')}} Added inheritance of the {{domxref("ElementTraversal")}} interface.
{{SpecName('DOM WHATWG', '#interface-element', 'Element')}} {{Spec2('DOM WHATWG')}} Removed the following methods: closest(), setIdAttribute(), setIdAttributeNS(), and setIdAttributeNode().
Removed the schemaTypeInfo property.
Modified the return value of getElementsByTag() and getElementsByTagNS().
Moved hasAttributes() form the Node interface to this one.
Inserted insertAdjacentElement() and insertAdjacentText().
{{SpecName('DOM3 Core', 'core.html#ID-745549614', 'Element')}} {{Spec2('DOM3 Core')}} Added the following methods: setIdAttribute(), setIdAttributeNS(), and setIdAttributeNode(). These methods were never implemented and have been removed in later specifications.
Added the schemaTypeInfo property. This property was never implemented and has been removed in later specifications.
{{SpecName('DOM2 Core', 'core.html#ID-745549614', 'Element')}} {{Spec2('DOM2 Core')}} The normalize() method has been moved to {{domxref("Node")}}.
{{SpecName('DOM1', 'level-one-core.html#ID-745549614', 'Element')}} {{Spec2('DOM1')}} Initial definition.

Browser compatibility

{{CompatibilityTable}}
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 1.0 {{CompatGeckoDesktop("1")}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} 1.0
children {{CompatVersionUnknown}} {{CompatGeckoDesktop("1.9")}} 7.0 with a significant bug [1]
9.0 according to the spec
{{CompatVersionUnknown}} {{CompatNo}}
childElementCount, nextElementSibling, previousElementSibling {{CompatVersionUnknown}} {{CompatGeckoDesktop("1.9.1")}} 9.0 {{CompatVersionUnknown}} {{CompatVersionUnknown}}
firstElementChild, lastElementChild {{CompatVersionUnknown}} {{CompatGeckoDesktop("1.9")}} 9.0 {{CompatVersionUnknown}} {{CompatVersionUnknown}}
classList {{CompatVersionUnknown}} {{CompatGeckoDesktop("1.9.2")}}   {{CompatVersionUnknown}} {{CompatVersionUnknown}}
outerHTML {{experimental_inline}} {{CompatVersionUnknown}} {{CompatGeckoDesktop("11")}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
clientLeft, clientTop {{experimental_inline}} {{CompatVersionUnknown}} {{CompatGeckoDesktop("1.9.1")}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
getBoundingClientRect(), getClientRects() {{experimental_inline}} {{CompatVersionUnknown}} {{CompatGeckoDesktop("1.9")}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
querySelector(), querySelectorAll() 1.0 {{CompatGeckoDesktop("1.9.1")}} 8.0 10.0 3.2 (525.3)
insertAdjacentHTML() {{experimental_inline}} 1.0 {{CompatGeckoDesktop("8")}} 4.0 7.0 4.0 (527)
setCapture() {{non-standard_inline}} {{CompatNo}} {{CompatGeckoDesktop("2")}} {{CompatNo}} {{CompatNo}} {{CompatNo}}
oncopy, oncut, onpaste {{non-standard_inline}} {{CompatNo}} {{CompatGeckoDesktop("1.9")}} {{CompatVersionUnknown}}   {{CompatNo}}
onwheel {{non-standard_inline}} {{CompatNo}} {{CompatGeckoDesktop("17")}} {{CompatNo}} {{CompatNo}} {{CompatNo}}
ongotpointercapture, onlostpointercapture, setPointerCapture(), and releasePointerCapture() {{CompatChrome(52.0)}} [4] {{CompatVersionUnknown}} [3] 10.0 {{CompatNo}} {{CompatNo}}
matches() {{experimental_inline}} {{CompatVersionUnknown}} with the non-standard name webkitMatchesSelector {{CompatGeckoDesktop("1.9.2")}} with the non-standard name mozMatchesSelector
{{CompatGeckoDesktop("34")}} with the standard name
9.0 with the non-standard name msMatchesSelector 11.5 with the non-standard name oMatchesSelector
15.0 with the non-standard name webkitMatchesSelector
5.0 with the non-standard name webkitMatchesSelector
find() and findAll() {{CompatNo}} {{CompatNo}} {{CompatNo}} {{CompatNo}} {{CompatNo}}
requestPointerLock() 16.0 {{property_prefix("webkit")}}, behind an about:flags
22.0 {{property_prefix("webkit")}} (with special cases, progressively lifted see [2])
{{CompatGeckoDesktop("14")}}{{property_prefix("moz")}} {{CompatNo}} {{CompatNo}} {{CompatNo}}
requestFullscreen() 14.0 {{property_prefix("webkit")}} {{CompatGeckoDesktop("10")}} {{property_prefix("moz")}} 11.0 {{property_prefix("ms")}} 12.10
15.0 {{property_prefix("webkit")}}
5.1 {{property_prefix("webkit")}}
undoManager and undoScope {{CompatNo}} {{CompatVersionUnknown}} (behind the dom.undo_manager.enabled pref) {{CompatNo}} {{CompatNo}} {{CompatNo}}
attributes {{CompatUnknown}} {{CompatGeckoDesktop("22")}}
Before this it was available via the {{domxref("Node")}} interface that any element inherits.
{{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
scrollTopMax() and scrollLeftMax() {{CompatNo}} {{CompatGeckoDesktop("16")}} {{CompatNo}} {{CompatNo}} {{CompatNo}}
closest() {{CompatUnknown}} {{CompatGeckoDesktop("35")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
hasAttributes() {{CompatVersionUnknown}} {{CompatGeckoDesktop("1.0")}} (on the {{domxref("Node")}} interface)
{{CompatGeckoDesktop("35")}} (on this interface
{{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
insertAdjacentElement(), insertAdjacentText() {{CompatVersionUnknown}} {{CompatGeckoDesktop("48.0")}} {{CompatUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
assignedSlotattatchShadow, shadowRoot, and slot {{CompatChrome(53.0)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
Feature Android Android Webview Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile Chrome for Android
Basic support 1.0   {{CompatGeckoMobile("1")}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} 1.0  
scrollTopMax() and scrollLeftMax() {{CompatNo}}   {{CompatGeckoMobile("16")}} {{CompatNo}} {{CompatNo}} {{CompatNo}}  
closest() {{CompatUnknown}}   {{CompatGeckoMobile("35")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}  
hasAttributes() {{CompatVersionUnknown}}   {{CompatGeckoMobile("1.0")}} (on the {{domxref("Node")}} interface)
{{CompatGeckoMobile("35")}} (on this interface
{{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}  
insertAdjacentElement(), insertAdjacentText() {{CompatVersionUnknown}}   {{CompatGeckoMobile("48.0")}} {{CompatUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}  
assignedSlotattatchShadow, shadowRoot, and slot {{CompatNo}} {{CompatChrome(53.0)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatChrome(53.0)}}

[1] Internet Explorer 7 and 8 incorrectly return the comments as part of the children of an Element. This is fixed in Internet Explorer 9 and later.

[2] Chrome 16 allowed webkitRequestPointerLock() only in fullscreen; Chrome 21 for trusted web site (permission asked); Chrome 22 allowed it by default for all same-origin document; Chrome 23 allowed it in sandboxed {{HTMLElement("iframe")}} if the non-standard value webkit-allow-pointer-lock is set to the {{htmlattrxref("sandbox", "iframe")}} attribute.

[3] Implementation withdrawn. See {{Bug("1166347")}}.

[4] Behind a flag.

Revision Source

<p>{{ APIRef("DOM") }}</p>

<p><span class="seoSummary">The <strong><code>Element</code></strong> interface represents an object of a {{domxref("Document")}}. This interface describes methods and properties common to all kinds of elements. Specific behaviors are described in interfaces which inherit from <code>Element</code> but add additional functionality.</span> For example, the {{domxref("HTMLElement")}} interface is the base interface for HTML elements, while the {{domxref("SVGElement")}} interface is the basis for all SVG elements.</p>

<p>Languages outside the realm of the Web platform, like XUL through the <code>XULElement</code> interface, also implement it.</p>

<h2 id="Properties" name="Properties">Properties</h2>

<p><em>Inherits properties from its parents {{domxref("Node")}}, and its own parent, {{domxref("EventTarget")}}, and implements those of {{domxref("ParentNode")}}, {{domxref("ChildNode")}}, {{domxref("NonDocumentTypeChildNode")}}, </em>and {{domxref("Animatable")}}.</p>

<dl>
 <dt>{{ domxref("Element.assignedSlot")}}&nbsp;{{readOnlyInline}}</dt>
 <dd>Returns the {{domxref("HTMLSlotElement")}} interface associated with the element.</dd>
 <dt>{{ domxref("Element.attributes") }} {{readOnlyInline}}</dt>
 <dd>Returns a {{ domxref("NamedNodeMap") }} object that cotaining the assigned attributes of the corresponding HTML element.</dd>
 <dt>{{ domxref("Element.classList") }} {{readOnlyInline}}</dt>
 <dd>Returns a {{ domxref("DOMTokenList") }} containing the list of class attributes.</dd>
 <dt>{{ domxref("Element.className") }}</dt>
 <dd>Is a {{domxref("DOMString")}} representing the class of the element.</dd>
 <dt>{{ domxref("Element.clientHeight") }} {{experimental_inline}} {{readOnlyInline}}</dt>
 <dd>Returns a {{jsxref("Number")}} representing the inner height of the element.</dd>
 <dt>{{ domxref("Element.clientLeft") }} {{experimental_inline}} {{readOnlyInline}}</dt>
 <dd>Returns a {{jsxref("Number")}} representing the width of the left border of the element.</dd>
 <dt>{{ domxref("Element.clientTop") }} {{experimental_inline}} {{readOnlyInline}}</dt>
 <dd>Returns a {{jsxref("Number")}} representing the width of the top border of the element.</dd>
 <dt>{{ domxref("Element.clientWidth") }} {{experimental_inline}} {{readOnlyInline}}</dt>
 <dd>Returns a {{jsxref("Number")}} representing the inner width of the element.</dd>
 <dt>{{ domxref("Element.id") }}</dt>
 <dd>Is a {{domxref("DOMString")}} representing the id of the element.</dd>
 <dt>{{ domxref("Element.innerHTML") }}</dt>
 <dd>Is a {{domxref("DOMString")}} representing the markup of the element's content.</dd>
 <dt>{{ domxref("Element.localName") }}&nbsp;{{readOnlyInline}}</dt>
 <dd>A {{domxref("DOMString")}} representing the local part of the qualified name of the element.</dd>
 <dt>{{domxref("Element.namespaceURI")}} {{readonlyInline}}</dt>
 <dd>The namespace URI of the element, or <code>null</code> if it is no namespace.
 <div class="note">
 <p><strong>Note:</strong> In Firefox 3.5 and earlier, HTML elements are in no namespace. In later versions, HTML elements are in the <code><a class="linkification-ext external" href="https://www.w3.org/1999/xhtml" title="Linkification: https://www.w3.org/1999/xhtml">https://www.w3.org/1999/xhtml</a></code> namespace in both HTML and XML trees. {{ gecko_minversion_inline("1.9.2") }}</p>
 </div>
 </dd>
 <dt>{{ domxref("NonDocumentTypeChildNode.nextElementSibling") }}&nbsp;{{readOnlyInline}}</dt>
 <dd>Is a {{ domxref("Element") }}, the element immediately following the given one in the tree, or <code>null</code> if there's no sibling node.</dd>
 <dt>{{ domxref("Element.outerHTML") }} {{experimental_inline}}</dt>
 <dd>Is a {{domxref("DOMString")}} representing the markup of the element including its content. When used as a setter, replaces the element with nodes parsed from the given string.</dd>
 <dt>{{ domxref("Element.prefix") }}&nbsp;{{readOnlyInline}}</dt>
 <dd>A {{domxref("DOMString")}} representing the namespace prefix of the element, or <code>null</code> if no prefix is specified.</dd>
 <dt>{{ domxref("NonDocumentTypeChildNode.previousElementSibling") }}&nbsp;{{readOnlyInline}}</dt>
 <dd>Is a {{ domxref("Element") }}, the element immediately preceding the given one in the tree, or <code>null</code> if there is no sibling element.</dd>
 <dt>{{ domxref("Element.scrollHeight") }} {{experimental_inline}} {{readOnlyInline}}</dt>
 <dd>Returns a {{jsxref("Number")}} representing the scroll view height of an element.</dd>
 <dt>{{ domxref("Element.scrollLeft") }} {{experimental_inline}}</dt>
 <dd>Is a {{jsxref("Number")}} representing the left scroll offset of the element.</dd>
 <dt>{{ domxref("Element.scrollLeftMax") }} {{non-standard_inline}} {{readOnlyInline}}</dt>
 <dd>Returns a {{jsxref("Number")}} representing the maximum left scroll offset possible for the element.</dd>
 <dt>{{ domxref("Element.scrollTop") }} {{experimental_inline}}</dt>
 <dd>Is a {{jsxref("Number")}} representing the top scroll offset the an element.</dd>
 <dt>{{ domxref("Element.scrollTopMax") }} {{non-standard_inline}} {{readOnlyInline}}</dt>
 <dd>Returns a {{jsxref("Number")}} representing the maximum top scroll offset possible for the element.</dd>
 <dt>{{ domxref("Element.scrollWidth") }} {{experimental_inline}} {{readOnlyInline}}</dt>
 <dd>Returns a {{jsxref("Number")}} representing the scroll view width of the element.</dd>
 <dt>{{domxref("Element.shadowRoot") }} {{experimental_inline}} {{readOnlyInline}}</dt>
 <dd>Returns the youngest shadow root that is hosted by the element.</dd>
 <dt>{{domxref("Element.slot")}} {{experimental_inline}}</dt>
 <dd>Returns the name of the shadow DOM slot attatched to the element.&nbsp;A slot is a placeholder inside a web component that users can fill with their own markup.</dd>
 <dt>{{domxref("Element.tabStop")}} {{non-standard_inline}}</dt>
 <dd>Is a {{jsxref("Boolean")}} indicating if the element can receive input focus via the tab key.</dd>
 <dt>{{ domxref("Element.tagName") }} {{readOnlyInline}}</dt>
 <dd>Returns a {{domxref("String")}} with the name of the tag for the given element.</dd>
 <dt>{{ domxref("Element.undoManager")}} {{experimental_inline}} {{readOnlyInline}}</dt>
 <dd>Returns the {{domxref("UndoManager")}} associated with the element.</dd>
 <dt>{{ domxref("Element.undoScope")}} {{experimental_inline}}</dt>
 <dd>Is a {{jsxref("Boolean")}} indicating if the element is an undo scope host, or not.</dd>
</dl>

<div class="note">
<p><strong>Note:</strong> DOM Level 3 defined <code>namespaceURI</code>, <code>localName</code> and <code>prefix</code> on the {{domxref("Node")}} interface. In DOM4 they were moved to <code>Element</code>.</p>

<p>This change is implemented in Chrome since version 46.0 and Firefox since version 48.0.</p>
</div>

<h3 id="Handlers" name="Handlers">Event handlers</h3>

<dl>
 <dt>{{ domxref("Element.ongotpointercapture") }}</dt>
 <dd>Returns the event handler for the {{event("gotpointercapture")}} event type.</dd>
 <dt>{{ domxref("Element.onlostpointercapture") }}</dt>
 <dd>Returns the event handler for the {{event("lostpointercapture")}} event type.</dd>
 <dt>{{ domxref("Element.onwheel") }} {{ non-standard_inline() }}</dt>
 <dd>Returns the event handling code for the {{ domeventxref("wheel") }} event.</dd>
</dl>

<h2 id="Methods" name="Methods">Methods</h2>

<p><em>Inherits methods from its parents {{domxref("Node")}}, and its own parent, {{domxref("EventTarget")}}<em>, and implements those of {{domxref("ParentNode")}}, {{domxref("ChildNode")}}<em>, {{domxref("NonDocumentTypeChildNode")}}, </em></em>and {{domxref("Animatable")}}.</em></p>

<dl>
 <dt>{{ domxref("EventTarget.addEventListener()") }}</dt>
 <dd>Registers an event handler to a specific event type on the element.</dd>
 <dt>{{domxref("Element.attachShadow()")}}&nbsp;{{experimental_inline}}</dt>
 <dd>Attatches a shadow DOM tree to the specified element and returns a reference to its {{domxref("ShadowRoot")}}.</dd>
 <dt>{{domxref("Element.animate()")}} {{experimental_inline}}</dt>
 <dd>A shortcut method to create and run an animation on an element. Returns the created Animation object instance.</dd>
 <dt>{{ domxref("Element.closest()")}} {{experimental_inline}}</dt>
 <dd>Returns the {{domxref("Element")}}, descendant of this element (or this element itself), that is the closest ancestor of the elements selected by the selectors given in parameter.</dd>
 <dt>{{ domxref("Element.createShadowRoot()")}} {{experimental_inline}}&nbsp;{{deprecated_inline()}}</dt>
 <dd>Creates a <a href="/en-US/docs/Web/Web_Components/Shadow_DOM">shadow DOM</a> on on the element, turning it into a shadow host. Returns a {{domxref("ShadowRoot")}}.</dd>
 <dt>{{ domxref("EventTarget.dispatchEvent()") }}</dt>
 <dd>Dispatches an event to this node in the DOM and returns a {{jsxref("Boolean")}} that indicates that at least one handler has not canceled it.</dd>
 <dt>{{domxref("Element.find()")}}{{experimental_inline}}</dt>
 <dd>...</dd>
 <dt>{{domxref("Element.findAll()")}}{{experimental_inline}}</dt>
 <dd>...</dd>
 <dt>{{domxref("Element.getAnimations()")}} {{experimental_inline}}</dt>
 <dd>Returns an array of Animation objects currently active on the element.</dd>
 <dt>{{ domxref("Element.getAttribute()") }}</dt>
 <dd>Retrieves the value of the named attribute from the current node and returns it as an {{jsxref("Object")}}.</dd>
 <dt>{{ domxref("Element.getAttributeNames()") }}</dt>
 <dd>&nbsp;</dd>
 <dt>{{ domxref("Element.getAttributeNS()") }}</dt>
 <dd>Retrieves the value of the attribute with the specified name and namespace, from the current node and returns it as an {{jsxref("Object")}}.</dd>
 <dt>{{ domxref("Element.getAttributeNode()") }} {{obsolete_inline}}</dt>
 <dd>Retrieves the node representation of the named attribute from the current node and returns it as an {{ domxref("Attr") }}.</dd>
 <dt>{{ domxref("Element.getAttributeNodeNS()") }} {{obsolete_inline}}</dt>
 <dd>Retrieves the node representation of the attribute with the specified name and namespace, from the current node and returns it as an {{ domxref("Attr") }}.</dd>
 <dt>{{ domxref("Element.getBoundingClientRect()") }}</dt>
 <dd>...</dd>
 <dt>{{ domxref("Element.getClientRects()") }}</dt>
 <dd>Returns a collection of rectangles that indicate the bounding rectangles for each line of text in a client.</dd>
 <dt>{{domxref("Element.getDestinationInsertionPoints()")}} {{experimental_inline}}</dt>
 <dd>…</dd>
 <dt>{{ domxref("Element.getElementsByClassName()") }}</dt>
 <dd>Returns a live {{ domxref("HTMLCollection") }} that contains all descendant of the current element that posses the list of classes given in parameter.</dd>
 <dt>{{ domxref("Element.getElementsByTagName()") }}</dt>
 <dd>Returns a live {{ domxref("HTMLCollection") }} containing all descendant elements, of a particular tag name, from the current element.</dd>
 <dt>{{ domxref("Element.getElementsByTagNameNS()") }}</dt>
 <dd>Returns a live {{ domxref("HTMLCollection") }} containing all descendant elements, of a particular tag name and namespace, from the current element.</dd>
 <dt>{{ domxref("Element.hasAttribute()") }}</dt>
 <dd>Returns a {{jsxref("Boolean")}} indicating if the element has the specified attribute or not.</dd>
 <dt>{{ domxref("Element.hasAttributeNS()") }}</dt>
 <dd>Returns a {{jsxref("Boolean")}} indicating if the element has the specified attribute, in the specified namespace, or not.</dd>
 <dt>{{ domxref("Element.hasAttributes()") }}</dt>
 <dd>Returns a {{jsxref("Boolean")}} indicating if the element has one or more HTML attributes present.</dd>
 <dt>{{ domxref("Element.insertAdjacentElement") }} {{experimental_inline}}</dt>
 <dd>Inserts a given element node at a given position relative to the element it is invoked upon.</dd>
 <dt>{{ domxref("Element.insertAdjacentHTML") }} {{experimental_inline}}</dt>
 <dd>Parses the text as HTML or XML and inserts the resulting nodes into the tree in the position given.</dd>
 <dt>{{ domxref("Element.insertAdjacentText") }} {{experimental_inline}}</dt>
 <dd>Inserts a given text node at a given position relative to the element it is invoked upon.</dd>
 <dt>{{ domxref("Element.matches()") }}<code> </code>{{experimental_inline}}</dt>
 <dd>Returns a {{jsxref("Boolean")}} indicating whether or not the element would be selected by the specified selector string.</dd>
 <dt>{{ domxref("Element.querySelector()") }}</dt>
 <dd>Returns the first {{ domxref("Node") }} which matches the specified selector string relative to the element.</dd>
 <dt>{{ domxref("Element.querySelectorAll") }}</dt>
 <dd>Returns a {{ domxref("NodeList") }} of nodes which match the specified selector string relative to the element.</dd>
 <dt>{{ domxref("Element.releasePointerCapture")}}</dt>
 <dd>Releases (stops) pointer capture that was previously set for a specific {{domxref("PointerEvent","pointer event")}}.</dd>
 <dt>{{domxref("ChildNode.remove()")}} {{experimental_inline}}</dt>
 <dd>Removes the element from the children list of its parent.</dd>
 <dt>{{ domxref("Element.removeAttribute()") }}</dt>
 <dd>Removes the named attribute from the current node.</dd>
 <dt>{{ domxref("Element.removeAttributeNS()") }}</dt>
 <dd>Removes the attribute with the specified name and namespace, from the current node.</dd>
 <dt>{{ domxref("Element.removeAttributeNode()") }} {{obsolete_inline}}</dt>
 <dd>Removes the node representation of the named attribute from the current node.</dd>
 <dt>{{ domxref("EventTarget.removeEventListener()") }}</dt>
 <dd>Removes an event listener from the element.</dd>
 <dt>{{ domxref("Element.requestFullscreen()") }} {{experimental_inline}}</dt>
 <dd>Asynchronously asks the browser to make the element full-screen.</dd>
 <dt>{{ domxref("Element.requestPointerLock()")}} {{experimental_inline}}</dt>
 <dd>Allows to asynchronously ask for the pointer to be locked on the given element.</dd>
</dl>

<dl>
 <dt>{{ domxref("Element.scrollIntoView()") }} {{experimental_inline}}</dt>
 <dd>Scrolls the page until the element gets into the view.</dd>
 <dt>{{ domxref("Element.setAttribute()") }}</dt>
 <dd>Sets the value of a named attribute of the current node.</dd>
 <dt>{{ domxref("Element.setAttributeNS()") }}</dt>
 <dd>Sets the value of the attribute with the specified name and namespace, from the current node.</dd>
 <dt>{{ domxref("Element.setAttributeNode()") }} {{obsolete_inline}}</dt>
 <dd>Sets the node representation of the named attribute from the current node.</dd>
 <dt>{{ domxref("Element.setAttributeNodeNS()") }} {{obsolete_inline}}</dt>
 <dd>Setw the node representation of the attribute with the specified name and namespace, from the current node.</dd>
 <dt>{{ domxref("Element.setCapture()") }} {{non-standard_inline}}</dt>
 <dd>Sets up mouse event capture, redirecting all mouse events to this element.</dd>
 <dt>{{domxref("Element.setPointerCapture()")}}</dt>
 <dd>Designates a specific element as the capture target of future {{domxref("PointerEvent","pointer events")}}.</dd>
</dl>

<h2 id="Specifications">Specifications</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">Specification</th>
   <th scope="col">Status</th>
   <th scope="col">Comment</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>{{SpecName('Shadow DOM')}}</td>
   <td>{{Spec2('Shadow DOM')}}</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td>{{SpecName("Web Animations", '', '')}}</td>
   <td>{{Spec2("Web Animations")}}</td>
   <td>Added the <code>getAnimations()</code> method.</td>
  </tr>
  <tr>
   <td>{{SpecName('Undo Manager', '', 'Element')}}</td>
   <td>{{Spec2('Undo Manager')}}</td>
   <td>Added the <code>undoScope</code> and <code>undoManager</code> properties.</td>
  </tr>
  <tr>
   <td>{{SpecName('Pointer Events 2', '#extensions-to-the-element-interface', 'Element')}}</td>
   <td>{{Spec2('Pointer Events 2')}}</td>
   <td>Added the following event handlers: <code>ongotpointercapture</code> and <code>onlostpointercapture</code>.<br />
    Added the following methods: <code>setPointerCapture()</code> and <code>releasePointerCapture()</code>.</td>
  </tr>
  <tr>
   <td>{{SpecName('Pointer Events', '#extensions-to-the-element-interface', 'Element')}}</td>
   <td>{{Spec2('Pointer Events')}}</td>
   <td>Added the following event handlers: <code>ongotpointercapture</code> and <code>onlostpointercapture</code>.<br />
    Added the following methods: <code>setPointerCapture()</code> and <code>releasePointerCapture()</code>.</td>
  </tr>
  <tr>
   <td>{{SpecName('Selectors API Level 2', '#interface-definitions', 'Element')}}</td>
   <td>{{Spec2('Selectors API Level 2')}}</td>
   <td>Added the following methods:<code> matches()</code> (implemented as <code>mozMatchesSelector()</code>), <code>find()</code>, <code>findAll()</code>.</td>
  </tr>
  <tr>
   <td>{{SpecName('Selectors API Level 1', '#interface-definitions', 'Element')}}</td>
   <td>{{Spec2('Selectors API Level 1')}}</td>
   <td>Added the following methods: <code>querySelector()</code> and <code>querySelectorAll()</code>.</td>
  </tr>
  <tr>
   <td>{{SpecName('Pointer Lock', 'index.html#element-interface', 'Element')}}</td>
   <td>{{Spec2('Pointer Lock')}}</td>
   <td>Added the <code>requestPointerLock()</code> method.</td>
  </tr>
  <tr>
   <td>{{SpecName('Fullscreen', '#api', 'Element')}}</td>
   <td>{{Spec2('Fullscreen')}}</td>
   <td>Added the <code>requestFullscreen()</code> method.</td>
  </tr>
  <tr>
   <td>{{SpecName('DOM Parsing', '#extensions-to-the-element-interface', 'Element')}}</td>
   <td>{{Spec2('DOM Parsing')}}</td>
   <td>Added the following properties: <code>innerHTML</code>, and <code>outerHTML</code>.<br />
    Added the following method: <code>insertAdjacentHTML()</code>.</td>
  </tr>
  <tr>
   <td>{{SpecName('CSSOM View', '#extensions-to-the-element-interface', 'Element')}}</td>
   <td>{{Spec2('CSSOM View')}}</td>
   <td>Added the following properties: <code>scrollTop</code>, <code>scrollLeft</code>, <code>scrollWidth</code>, <code>scrollHeight</code>, <code>clientTop</code>, <code>clientLeft</code>, <code>clientWidth</code>, and <code>clientHeight</code>.<br />
    Added the following methods: <code>getClientRects()</code>, <code>getBoundingClientRect()</code>, and <code>scrollIntoView()</code>.</td>
  </tr>
  <tr>
   <td>{{SpecName('Element Traversal', '#ecmascript-bindings', 'Element')}}</td>
   <td>{{Spec2('Element Traversal')}}</td>
   <td>Added inheritance of the {{domxref("ElementTraversal")}} interface.</td>
  </tr>
  <tr>
   <td>{{SpecName('DOM WHATWG', '#interface-element', 'Element')}}</td>
   <td>{{Spec2('DOM WHATWG')}}</td>
   <td>Removed the following methods: <code>closest()</code>, <code>setIdAttribute()</code>, <code>setIdAttributeNS()</code>, and <code>setIdAttributeNode()</code>.<br />
    Removed the <code>schemaTypeInfo</code> property.<br />
    Modified the return value of <code>getElementsByTag()</code> and <code>getElementsByTagNS()</code>.<br />
    Moved <code>hasAttributes()</code> form the <code>Node</code> interface to this one.<br />
    Inserted <code>insertAdjacentElement()</code> and <code>insertAdjacentText()</code>.</td>
  </tr>
  <tr>
   <td>{{SpecName('DOM3 Core', 'core.html#ID-745549614', 'Element')}}</td>
   <td>{{Spec2('DOM3 Core')}}</td>
   <td>Added the following methods: <code>setIdAttribute()</code>, <code>setIdAttributeNS()</code>, and <code>setIdAttributeNode()</code>. These methods were never implemented and have been removed in later specifications.<br />
    Added the <code>schemaTypeInfo</code> property. This property was never implemented and has been removed in later specifications.</td>
  </tr>
  <tr>
   <td>{{SpecName('DOM2 Core', 'core.html#ID-745549614', 'Element')}}</td>
   <td>{{Spec2('DOM2 Core')}}</td>
   <td>The <code>normalize()</code> method has been moved to {{domxref("Node")}}.</td>
  </tr>
  <tr>
   <td>{{SpecName('DOM1', 'level-one-core.html#ID-745549614', 'Element')}}</td>
   <td>{{Spec2('DOM1')}}</td>
   <td>Initial definition.</td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility">Browser compatibility</h2>

<div>{{CompatibilityTable}}</div>

<div id="compat-desktop">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Chrome</th>
   <th>Firefox (Gecko)</th>
   <th>Internet Explorer</th>
   <th>Opera</th>
   <th>Safari (WebKit)</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>1.0</td>
   <td>{{CompatGeckoDesktop("1")}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>1.0</td>
  </tr>
  <tr>
   <td><code>children</code></td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatGeckoDesktop("1.9")}}</td>
   <td>7.0 with a significant bug [1]<br />
    9.0 according to the spec</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>childElementCount</code>, <code>nextElementSibling</code>, <code>previousElementSibling</code></td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatGeckoDesktop("1.9.1")}}</td>
   <td>9.0</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
  <tr>
   <td><code>firstElementChild</code>, <code>lastElementChild</code></td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatGeckoDesktop("1.9")}}</td>
   <td>9.0</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
  <tr>
   <td><code>classList</code></td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatGeckoDesktop("1.9.2")}}</td>
   <td>&nbsp;</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
  <tr>
   <td><code>outerHTML</code> {{experimental_inline}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatGeckoDesktop("11")}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
  <tr>
   <td><code>clientLeft</code>, <code>clientTop</code> {{experimental_inline}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatGeckoDesktop("1.9.1")}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
  <tr>
   <td><code>getBoundingClientRect()</code>, <code>getClientRects()</code> {{experimental_inline}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatGeckoDesktop("1.9")}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
  <tr>
   <td><code>querySelector()</code>, <code>querySelectorAll()</code></td>
   <td>1.0</td>
   <td>{{CompatGeckoDesktop("1.9.1")}}</td>
   <td>8.0</td>
   <td>10.0</td>
   <td>3.2 (525.3)</td>
  </tr>
  <tr>
   <td><code>insertAdjacentHTML()</code> {{experimental_inline}}</td>
   <td>1.0</td>
   <td>{{CompatGeckoDesktop("8")}}</td>
   <td>4.0</td>
   <td>7.0</td>
   <td>4.0 (527)</td>
  </tr>
  <tr>
   <td><code>setCapture() </code>{{non-standard_inline}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatGeckoDesktop("2")}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>oncopy</code>, <code>oncut</code>, <code>onpaste</code> {{non-standard_inline}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatGeckoDesktop("1.9")}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>&nbsp;</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>onwheel</code> {{non-standard_inline}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatGeckoDesktop("17")}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>ongotpointercapture</code>, <code>onlostpointercapture</code>, <code>setPointerCapture()</code>, and <code>releasePointerCapture()</code></td>
   <td>{{CompatChrome(52.0)}} [4]</td>
   <td>{{CompatVersionUnknown}} <sup>[3]</sup></td>
   <td>10.0</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>matches()</code> {{experimental_inline}}</td>
   <td>{{CompatVersionUnknown}} with the non-standard name <code>webkitMatchesSelector</code></td>
   <td>{{CompatGeckoDesktop("1.9.2")}} with the non-standard name <code>mozMatchesSelector</code><br />
    {{CompatGeckoDesktop("34")}} with the standard name</td>
   <td>9.0 with the non-standard name <code>msMatchesSelector</code></td>
   <td>11.5 with the non-standard name <code>oMatchesSelector</code><br />
    15.0 with the non-standard name <code>webkitMatchesSelector</code></td>
   <td>5.0 with the non-standard name <code>webkitMatchesSelector</code></td>
  </tr>
  <tr>
   <td><code>find()</code> and <code>findAll()</code></td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>requestPointerLock()</code></td>
   <td>16.0 {{property_prefix("webkit")}}, behind an about:flags<br />
    22.0 {{property_prefix("webkit")}} (with special cases, progressively lifted see [2])</td>
   <td>{{CompatGeckoDesktop("14")}}{{property_prefix("moz")}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>requestFullscreen()</code></td>
   <td>14.0 {{property_prefix("webkit")}}</td>
   <td>{{CompatGeckoDesktop("10")}} {{property_prefix("moz")}}</td>
   <td>11.0 {{property_prefix("ms")}}</td>
   <td>12.10<br />
    15.0 {{property_prefix("webkit")}}</td>
   <td>5.1 {{property_prefix("webkit")}}</td>
  </tr>
  <tr>
   <td><code>undoManager</code> and <code>undoScope</code></td>
   <td>{{CompatNo}}</td>
   <td>{{CompatVersionUnknown}} (behind the <code>dom.undo_manager.enabled</code> pref)</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>attributes</code></td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatGeckoDesktop("22")}}<br />
    Before this it was available via the {{domxref("Node")}} interface that any <code>element</code> inherits.</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
  </tr>
  <tr>
   <td><code>scrollTopMax()</code> and <code>scrollLeftMax()</code></td>
   <td>{{CompatNo}}</td>
   <td>{{CompatGeckoDesktop("16")}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>closest()</code></td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatGeckoDesktop("35")}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
  </tr>
  <tr>
   <td><code>hasAttributes()</code></td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatGeckoDesktop("1.0")}} (on the {{domxref("Node")}} interface)<br />
    {{CompatGeckoDesktop("35")}} (on this interface</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
  <tr>
   <td><code>insertAdjacentElement()</code>, <code>insertAdjacentText()</code></td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatGeckoDesktop("48.0")}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
  <tr>
   <td><code>assignedSlot</code>,&nbsp;<code>attatchShadow</code>, <code>shadowRoot</code>, and&nbsp;<code>slot</code></td>
   <td>{{CompatChrome(53.0)}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
  </tr>
 </tbody>
</table>
</div>

<div id="compat-mobile">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Android</th>
   <th>Android Webview</th>
   <th>Firefox Mobile (Gecko)</th>
   <th>IE Phone</th>
   <th>Opera Mobile</th>
   <th>Safari Mobile</th>
   <th>Chrome for Android</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>1.0</td>
   <td>&nbsp;</td>
   <td>{{CompatGeckoMobile("1")}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>1.0</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><code>scrollTopMax()</code> and <code>scrollLeftMax()</code></td>
   <td>{{CompatNo}}</td>
   <td>&nbsp;</td>
   <td>{{CompatGeckoMobile("16")}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><code>closest()</code></td>
   <td>{{CompatUnknown}}</td>
   <td>&nbsp;</td>
   <td>{{CompatGeckoMobile("35")}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><code>hasAttributes()</code></td>
   <td>{{CompatVersionUnknown}}</td>
   <td>&nbsp;</td>
   <td>{{CompatGeckoMobile("1.0")}} (on the {{domxref("Node")}} interface)<br />
    {{CompatGeckoMobile("35")}} (on this interface</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><code>insertAdjacentElement()</code>, <code>insertAdjacentText()</code></td>
   <td>{{CompatVersionUnknown}}</td>
   <td>&nbsp;</td>
   <td>{{CompatGeckoMobile("48.0")}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td><code>assignedSlot</code>,&nbsp;<code>attatchShadow</code>, <code>shadowRoot</code>, and&nbsp;<code>slot</code></td>
   <td>{{CompatNo}}</td>
   <td>{{CompatChrome(53.0)}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatChrome(53.0)}}</td>
  </tr>
 </tbody>
</table>
</div>

<p>[1] Internet Explorer 7 and 8 incorrectly return the comments as part of the children of an Element. This is fixed in Internet Explorer 9 and later.</p>

<p>[2] Chrome 16 allowed <code>webkitRequestPointerLock()</code> only in fullscreen; Chrome 21 for trusted web site (permission asked); Chrome 22 allowed it by default for all same-origin document; Chrome 23 allowed it in sandboxed {{HTMLElement("iframe")}} if the non-standard value <code>webkit-allow-pointer-lock</code> is set to the {{htmlattrxref("sandbox", "iframe")}} attribute.</p>

<p>[3] Implementation withdrawn. See {{Bug("1166347")}}.</p>

<p>[4] Behind a flag.</p>
Revert to this revision