DOM Levels

This document gives an overview of the different DOM Levels, what each additional level brings with regards to functionality, and the degree of support Mozilla offers for them. If you're looking for an introduction to the DOM, this is not the right place. :-)

All of the following texts are the "abstracts" of the DOM specifications. All this and more can be found of the W3C DOM site.

DOM Level 1

The DOM Level 1 specification is separated into two parts: Core and HTML.

Interfaces introduced in DOM1 include, amongst others, the Document, Node, Attr, Element, and Text interfaces. All interfaces contain attributes and/or methods that can be used to interact with XML and HTML documents.

DOM1 Core

The Core DOM1 section provides a low-level set of fundamental interfaces that can represent any structured document, as well as defining extended interfaces for representing an XML document.

Level of support: Excellent.


The HTML Level 1 section provides additional, higher-level interfaces that are used with the fundamental interfaces defined in the Core Level 1 section to provide a more convenient view of an HTML document.

Level of support: Excellent.

DOM Level 2

The DOM Level 2 specification contains the following 6 different Recommendations. Most of the DOM Level 2 is supported in Mozilla.

DOM2 Core

The DOM2 Core extends the functionality of the DOM1 Core. It also contains specialized interfaces dedicated to XML. Examples of methods introduced in the DOM2 Core include the famous getElementById, and many namespace-related methods.

Level of support: Very good.

DOM2 Views

The DOM2 Views allows programs and scripts to dynamically access and update the content of a representation of a document. The introduced interfaces are AbstractView and DocumentView.

Level of support: Perfect.

DOM2 Events

The DOM2 Events gives to programs and scripts a generic event system. It introduces the concepts of event flow, capture, bubbling, and cancelation. Famous methods here include addEventListener and handleEvent. Several interfaces make your life easier when dealing with events: EventTarget, EventListener, Event, DocumentEvent, MouseEvent, MutationEvent, etc. It does not include however an interface for the keyboard events, which will be dealt with in later versions of the DOM.

Level of support: Very good.

DOM2 Style

The DOM2 CSS, or DOM2 Style allows programs and scripts to dynamically access and update the content of style sheets documents. It has interfaces for Style Sheets, Cascading Style Sheets, CSSRule, CSSStyleDeclaration, the famous getComputedStyle (supported in Mozilla!), the many many CSS2Properties, and all the media rules you could imagine.

Level of support: Good.

DOM2 Traversal and Range

The DOM2 Traversal and Range allow programs and scripts to dynamically traverse and identify a range of content in a document.

The DOM2 Traversal provides interfaces like NodeIterator and TreeWalker to easily traverse the content of a document.

The DOM2 Range allows the creation, insertion, modification, and deletion of a range of content in a Document, DocumentFragment, or Attr. It can be characterized as selecting all of the content between a pair of boundary-points.

Level of support: Good for Range; for Traversal, the TreeWalker is supported, however NodeIterator is not implemented at all.


The DOM2 HTML allows programs and scripts to dynamically access and update the content and structure of HTML documents. It extends the interfaces defined in the DOM1 HTML, using the DOM2 Core possibilities. It introduces the contentDocument property, a useful way to access the document contained in a frame.

Level of support: Good.

DOM Level 3

The DOM Level 3 specification is currently made of 5 different specifications.

DOM3 Core

The DOM3 Core will extend the functionality of the DOM1 and DOM2 Core specs. New methods and properties include adoptNode, strictErrorChecking, and textContent to name only a few.

Level of support: Only a few properties and methods are supported, like baseURI. If you want to help with the code, please look at bug 159167.

DOM3 Load and Save

The DOM3 Load and Save allows programs and scripts to dynamically load the content of an XML document into a DOM document and serialize a DOM document into an XML document.

Level of support: None. If you want to help with the code, please look at bug 155749.

DOM3 Validation

The DOM3 Validation allows programs and scripts to dynamically update the content and the structure of documents while ensuring that the document remains valid, or to ensure that the document becomes valid.

Level of support: None.

DOM3 Events

The DOM3 Events is the extension of the DOM2 events spec. This spec mainly focuses on keyboard events and how to handle them.

Level of support: Parts.

DOM3 XPath

The DOM3 XPath provides simple functionalities to access a DOM tree using XPath 1.0.

Level of support: Parts.