Because the DOM supports navigation in any direction (e.g., parent and previous sibling) and allows for arbitrary modifications, an implementation must at least buffer the document that has been read so far (or some parsed form of it). Hence the DOM is likely to be best suited for applications where the document must be accessed repeatedly or out of sequence order. If the application is strictly sequential and one-pass, the SAX model is likely to be faster and use less memory. In addition, non-extractive XML parsing models, such as VTD-XML, provide a new memory-efficient option.
W3C began development of the DOM in the mid-1990s. Although the W3C never produced a specification for DOM 0, it was nonetheless a partially documented model and was included in the specification of HTML 4. By October 1998, the first specification of DOM (DOM 1) was released. DOM 2 was issued in November 2000, with specifics on the style sheet object model and style information manipulation. DOM 3 was released in April 2004 and is the current release of the DOM specification.
Earlier, when each Web browser exclusively supported its own intermediate DOM, interoperability problems were numerous. In order to be cross-browser compatible, that is, support multiple browsers, large parts of Dynamic HTML code had to be rewritten for each browser to be supported. A common DOM promised substantial simplification of the development of complex Web applications.
The article Comparison of layout engines (DOM) shows which methods and attributes may be used safely given certain browser requirements.