Comparison of layout engines (DOM) |
The following tables compare Document Object Model compatibility and support for a number of layout engines. Please see the individual products articles for further information. This article is not all-inclusive or necessarily up-to-date. Unless otherwise specified in footnotes, comparisons are based on the stable versions without any add-ons, extensions or external programs.
For feature that is fully supported (based on DOM Level 2 or DOM Level 3 modules that are under W3C Recommendation), an exact version number is given if it is certain that the feature was added in such version; otherwise, a rough version number is given (e.g. < 2.0 means that the feature was supported since version 2.0 or below). DOM Level 0 and DOM Level 3 modules that are still under development are not included.
=General overview=
=Core (Fundamental)=
The interfaces within this section are considered fundamental, and must be fully implemented by all conforming implementations of the DOM, including all HTML DOM implementations.
==Trident Core (Fundamental) notes==
# getAttribute(), setAttribute(), removeAttribute() — returns, sets, and removes, respectively, the corresponding DOM property instead of the string value of the attribute. For example, element.getAttribute( onclick ) returns element.onclick, which is a reference to a function and not a string. Another example: element.removeAttribute( class ) does not work as expected; element.removeAttribute( className ) must be called instead. [http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/getattribute.asp]
==Gecko Core (Fundamental) notes==
# ownerDocument — ownerDocument of orphan Text and Attr nodes is null [https://bugzilla.mozilla.org/show_bug.cgiid=27382]. # insertBefore(), replaceChild(), removeChild(), appendChild() — Fails on Attr node [https://bugzilla.mozilla.org/show_bug.cgiid=56758]. appendChild does not work as expected for DocumentFragment node [https://bugzilla.mozilla.org/show_bug.cgiid=127051]. # createProcessingInstruction() — Does not work with XHTML prior to 1.7 [https://bugzilla.mozilla.org/show_bug.cgiid=69840]. # createEntityReference() — Supported, but returns null when the method is checked [https://bugzilla.mozilla.org/show_bug.cgiid=9850]. # domConfig — Not yet implemented. Known as config prior to 1.6 [https://bugzilla.mozilla.org/show_bug.cgiid=222733].
==Presto Core (Fundamental) notes==
# URI attribute value — All URI attribute values are resolved to full URI. Hence the value from getAttribute() and getAttributeNode() could be wrong if relative URIs are used.
=Core (Extended)=
The interfaces defined here form part of the DOM Core specification, but objects that expose these interfaces will never be encountered in a DOM implementation that deals only with HTML.
=HTML=
The interfaces found within this section are not mandatory. This section extends the DOM Core API to describe objects and methods specific to HTML documents, and XHTML documents. In general, the functionality needed to manipulate hierarchical document structures, elements, and attributes will be found in the core section; functionality that depends on the specific elements defined in HTML will be found in this section. Elements deprecated since HTML 4.01 are not listed. Some elements and attributes listed here are deprecated in XHTML 1.1. For example, presentation attributes, image maps, frames and targets.
==Trident HTML notes==
# profile, href, background, action, cite, longDesc, codebase, data, src — Relative URL was not resolved to full URL.
==Gecko HTML notes==
# action, src, cite — Relative URL was not resolved to full URL prior to 1.8 [https://bugzilla.mozilla.org/show_bug.cgiid=292754].
==WebCore HTML notes==
# cellIndex — Always return zero [http://answers.google.com/answers/threadviewid=524043].
==Presto HTML notes==
# text — Returns data at src, should return inline data instead.
=Style (Style Sheets)=
The interfaces found within this section are not mandatory. The interfaces in this section are base interfaces used to represent any type of style sheet.
==Trident Style (Style Sheets) notes==
# href — Relative URL is not resolved to full URL. # media — Returns string instead of MediaList.
=Style (CSS Fundamental)=
The interfaces within this section are considered fundamental CSS interfaces, and must be supported by all conforming implementations of the CSS module. These interfaces represent CSS style sheets specifically.
==Tasman Style (CSS Fundamental) notes==
# getPropertyPriority() — Returns !important instead of important.
=Style (CSS Extended)=
The interfaces found within this section are not mandatory.
=Events=
The interfaces found within this section are not mandatory. The first goal is the design of a generic event system which allows registration of event handlers, describes event flow through a tree structure, and provides basic contextual information for each event. The second goal of the event model is to provide a common subset of the current event systems used in DOM Level 0 browsers. See also DOM Events for details.
==Trident Events notes==
# button — Does not use W3C values.
==Tasman Events notes==
# button — Does not use W3C values.
==Gecko Events notes==
# target — Return text node, if any, of the target element node prior to 1.3. # timeStamp — Returns a string, but should return a Date [https://bugzilla.mozilla.org/show_bug.cgiid=77992].
==WebCore Events notes==
# target — Return text node, if any, of the target element node (fixed in v73, but reverted in v85). # clientX, clientY — Treated as pageX and pageY. # button — Does not use W3C values.
==Presto Events notes==
# button — Does not use W3C values prior to 8.0.
=Views=
The interfaces found within this section are not mandatory. A document may have one or more views associated with it, e.g., a computed view on a document after applying a CSS stylesheet, or multiple presentations (e.g. HTML frame) of the same document in a client. That is, a view is some alternate representation of, or a presentation of, and associated with, a source document.
=Traversal=
The interfaces found within this section are not mandatory. Its interfaces provide easy-to-use, robust, selective traversal of a document s contents.
=Range=
The interfaces found within this section are not mandatory. It includes methods for creating and moving a Range and methods for manipulating content with Ranges.
=Load and Save=
The interfaces within this section are considered fundamental, and must be fully implemented by all conforming implementations of the DOM Load and Save module.
=Validation=
The interfaces found within this section are not mandatory. This module provides interfaces to guide construction and editing of XML documents. Examples of such guided editing are queries like those that combine questions like what does the schema allow me to insert/delete here and if I insert/delete here, will the document still be valid.
=References=
* * * * * * * * *
=See also=
*Comparison of layout engines
=External links=
*[http://www.quirksmode.org/dom/ QuirksMode - DOM] *[http://nanobox.chipx86.com/browser_support_dom.php Web Browser DOM support]|
|
