- Comparison of layout engines (Document Object Model)
-
The following tables compare DOM 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 features that are 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. DOM Level 0 and DOM Level 3 modules that are still under development are not included.
Contents
Explanation of the tables
Engine nomenclature
Rather than the names of web browsers, the names of the underlying engines are used. The browsers that use the various engines are listed below.
Layout engine Release version Preview version Used by Amaya 11.3.1 11.3-pre Amaya Gecko 6.0.2 8.0a2 All Mozilla software, including Firefox; SeaMonkey and Galeon; Camino; K-Meleon; Flock (up to 2.x); Epiphany-gecko; Debian IceWeasel; GNU IceCat (formerly GNU IceWeasel); Icedove, Iceape and Iceowl; Fennec KHTML N/A Konqueror Presto 2.9.168 2.9.168 Opera; Opera Mobile, Nintendo DS & DSi Browser; Internet Channel Prince 7.1 N/A Prince XML Tasman (IE 5.2.3 for Mac) none (aborted in 2003) Internet Explorer 5+ for Mac OS X Trident 5.0 (IE 9) 6.0 (IE 10) Internet Explorer and other Internet Explorer shells like Maxthon (Microsoft Windows operating systems only), Windows Phone 7 WebKit 534.20 r83424 Safari (both desktop and mobile), Google Chrome, Maxthon 3, Shiira, iCab 4, OmniWeb 5.5+, Epiphany, Adobe AIR, Midori, Adobe Dreamweaver CS4 and CS5, Android browser, Palm webOS browser, Symbian S60 browser, OWB, Steam, Rekonq, Arora, Flock (version 3+), RockMelt Values
Values indicate the level of support in the most recent version of the layout engine, or (if a version number is given) in the specified version. Version numbers without any other value indicate the version at which the layout engine first fully supported the feature.
Value Meaning Yes Indicates that the layout engine fully supports this property/element when valid values are used. No Indicates that the property/element is completely ignored. Partial Indicates that the property/element is understood, but that not all values are supported. Supported values are implemented correctly. Incorrect Indicates that the property/element is understood, but that it is not implemented correctly in all cases. Experimental Indicates that the property/element is understood, but supported under an alternate name. May be incomplete or buggy. Dropped Indicates that the property/element is no longer supported. Nightly build Indicates that the property/element is supported to some extent in an experimental/nightly build. Future support is expected. Depends Indicates that the property/element is supported only on certain platforms, or if certain settings are configured. General overview
Trident Tasman Gecko WebKit KHTML Presto DOM1 6.0 Yes 1.0 85 Yes 1.0 DOM2 Mostly Partial Mostly Partial Mostly Mostly DOM3 No No Partial Partial Partial Partial 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 Tasman Gecko WebKit KHTML Presto Exception DOMException DOM1 code ? ? 1.0 ? ? 1.0 Interface DOMStringList DOM3 length No No 1.6 No ? 2.0 contains() ? item() ? Interface NameList DOM3 length No No 1.6 No No No getName() getNamespaceURI() contains() containsNS() Interface DOMImplementationList DOM3 length No No No No No No item() Interface DOMImplementationSource DOM3 getDOMImplementation() No No No No No No getDOMImplementationList() Interface DOMImplementation DOM1 hasFeature() 6.0 ? 1.0 Yes ? 1.0 DOM2 createDocumentType() 9.0[t 1] No ? 1.0 createDocument() ? DOM3 getFeature() No No No ? 1.0 Interface DocumentFragment DOM1 (no properties) 6.0 No 1.0 ? ? 1.0 Interface Document DOM1 doctype 9.0 Yes Partial Yes ? 1.0 createElement() 4.0 1.0 ? createTextNode() 5.0 ? createAttribute() 6.0 ? documentElement 5.0 ? getElementsByTagName() ? implementation 6.0 ? createDocumentFragment() No ? createComment() ? createCDATASection() 9.0[t 1] ? createProcessingInstruction() ? 1.7 ? createEntityReference() No ? No [1] ? No DOM2 importNode() 9.0[t 1] No 1.0 Yes ? 1.0 createElementNS() ? createAttributeNS() ? getElementsByTagNameNS() ? getElementById() 8.0 Yes ? 2.1 DOM3 adoptNode() 9.0[t 1] No 1.7 Yes ? 2.0 inputEncoding No ? No xmlEncoding ? xmlStandalone ? xmlVersion ? domConfig No No ? strictErrorChecking 1.7 ? documentURI ? normalizeDocument() ? renameNode() ? Interface Node DOM1 nodeName 5.0 Yes 1.0 Yes ? 1.0 nodeValue ? nodeType ? parentNode ? childNodes ? firstChild ? lastChild ? previousSibling ? nextSibling ? attributes ? cloneNode() ? insertBefore() Partial ? replaceChild() ? removeChild() ? appendChild() ? ownerDocument 6.0 1.9 ? hasChildNodes() 1.0 ? DOM2 namespaceURI 5.0 Yes 1.0 Yes ? 1.0 prefix ? localName ? isSupported() 9.0[t 1] ? hasAttributes() ? DOM3 isSameNode() 9.0 No 1.8 Yes ? 2.1 compareDocumentPosition() 9.0[t 1] 1.7 4.2.4 baseURI No ? Yes textContent 9.0[t 1] ? 2.0 lookupPrefix() ? isDefaultNamespace() ? lookupNamespaceURI() ? getFeature() No ? setUserData() ? No getUserData() ? isEqualNode() 9.0[t 1] 1.9 ? 2.7 Interface NodeList DOM1 length 5.0 Yes 1.0 Yes ? 1.0 item() ? Interface NamedNodeMap DOM1 length 5.0 Yes 1.0 Yes ? 1.0 getNamedItem() ? setNamedItem() ? removeNamedItem() ? item() ? DOM2 getNamedItemNS() 9.0[t 1] No 1.0 Yes ? 1.0 setNamedItemNS() ? removeNamedItemNS() ? Interface CharacterData DOM1 data 4.0 Yes 1.0 Yes ? 1.0 length ? substringData() ? appendData() ? insertData() ? deleteData() ? replaceData() ? Interface Attr DOM1 name 6.0 ? 1.0 Yes Yes 1.0 value ? specified Incorrect Incorrect 1.9.1 Yes Yes DOM2 ownerElement 9.0[t 1] ? 1.0 Yes Yes 1.0 DOM3 schemaTypeInfo No No No No ? No isId 1.9 No Interface Element DOM1 tagName 4.0 Yes 1.0 Yes Yes 1.0 getElementsByTagName() getAttribute() 8.0 setAttribute() removeAttribute() getAttributeNode() 6.0 setAttributeNode() 9.0[t 1] removeAttributeNode() normalize() No ? DOM2 getAttributeNS() 9.0[t 1] Yes 1.0 Yes ? 1.0 setAttributeNS() ? removeAttributeNS() ? getAttributeNodeNS() ? setAttributeNodeNS() ? getElementsByTagNameNS() No ? hasAttribute() Yes ? hasAttributeNS() ? DOM3 schemaTypeInfo No No No No ? No setIdAttribute() ? setIdAttributeNS() ? setIdAttributeNode() ? Interface Text DOM1 splitText() 9.0[t 1] Yes 1.0 Yes ? 1.0 DOM3 isElementContentWhitespace No No 1.9.1 No ? Yes wholeText 9.0[t 1] ? 2.1 replaceWholeText() ? Interface Comment DOM1 (no properties) 6.0 No 1.0 Yes ? 1.0 Interface TypeInfo DOM3 typeName No No No No No No typeNamespace isDerivedFrom() Interface UserDataHandler DOM3 handle() No No No No No No Interface DOMError DOM3 severity No No No No No 2.0 message type location relatedData relatedException No Interface DOMErrorHandler DOM3 handleError() No No No No No 2.0 Interface DOMLocator DOM3 lineNumber No No No No No 2.0 columnNumber byteOffset utf16Offset relatedNode uri Interface DOMConfiguration DOM3 parameterNames No No No No ? 2.0 setParameter() ? getParameter() ? canSetParameter() ? Trident Core (Fundamental) notes
- doctype — Prior to version 9.0, returns true when checked but always contains null.
- getElementById() — Prior to version 8.0 returned elements with name attribute set to value being found, not only id.[t 2]
- getAttribute(), setAttribute(), removeAttribute() — prior to version 8.0 returned, set, or removed, respectively, the corresponding DOM property instead of the string value of the attribute.
- AttributeNode.specified — Does not set
specified
totrue
if ownerElement is null. - Node.isSameNode — Prior to version 9.0, only supported for XML documents.
Tasman Core (Fundamental) notes
- AttributeNode.specified — Does not set
specified
totrue
if ownerElement is null.
Gecko Core (Fundamental) notes
- insertBefore(), replaceChild(), removeChild(), appendChild() — Fails on
Attr
nodes.[g 1]appendChild
does not work as expected forDocumentFragment
nodes prior to 1.8. - AttributeNode.specified — Prior to 1.9.1 does not set
specified
totrue
if ownerElement is null. Does not create Attribute Nodes for default values specified in the DTD.
Presto Core (Fundamental) notes
- getElementById() — Versions prior to Opera 9.50 returns elements with name attribute set to value being found, not only id.[p 1]
- URI attribute value — In versions prior to Opera 9, all URI attribute values are resolved to full URI. Hence the value from
getAttribute()
andgetAttributeNode()
could be wrong if relative URIs are used. - Attributes that are not supported in the layout engine are still parsed and available through DOM. E.g. char and charoff are available under .ch and .chOff.
- In Opera 8.54 methods DOMImplementation.createDocument and DOMDocument.createElementNS both fail to accept any non-empty namespace URI. They work in Opera 9 Beta 2 and they may also have worked before (somebody with Opera 8, please check.) The symptom is that the namespaceURI property is null/empty and serialization gives wrong result.
WebKit Core (Fundamental) notes
- AttributeNode.specified — Does not create Attribute Nodes for default values specified in the DTD.
KHTML Core (Fundamental) notes
- AttributeNode.specified — Does not create Attribute Nodes for default values specified in the DTD.
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.
Trident Tasman Gecko WebKit KHTML Presto Interface CDATASection DOM1 (no properties) No No 1.0 Yes ? 2.0 Interface DocumentType DOM1 name No No 1.0 Yes ? 1.0 entities No[g 2] ? notations ? DOM2 publicId No No 1.0 Yes ? 1.0 systemId ? internalSubset ? Interface Notation DOM1 publicId No No 1.0 Yes ? 2.0 systemId ? Interface Entity DOM1 publicId No No 1.0 Yes ? No systemId ? notationName ? DOM3 inputEncoding No No No No ? No xmlEncoding ? xmlVersion ? Interface EntityReference DOM1 (no properties) No No 1.0 Yes ? No Interface ProcessingInstruction DOM1 target No No 1.0 Yes ? 2.0 data ? 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 Tasman Gecko WebKit KHTML Presto Interface HTMLCollection DOM1 length 7.0 ? 1.0 ? ? 1.0 item() ? ? ? namedItem() ? ? ? Interface HTMLOptionsCollection DOM2 length ? ? 1.0 ? ? 2.0 item() ? ? ? ? namedItem() ? ? ? ? Interface HTMLDocument DOM1 domain 4.0 Yes 1.0 Yes ? 1.0 URL ? body ? images ? applets ? title 3.0 ? referrer ? links ? forms ? anchors ? cookie ? open() ? close() ? write() ? writeln() ? getElementsByName() Yes ? ? Interface HTMLElement DOM1 id 4.0 Yes 1.0 ? ? 1.0 title ? ? lang ? ? className ? ? dir 5.0 ? ? Interface HTMLHtmlElement DOM1 version 6.0 ? 1.0 ? ? 2.0 Interface HTMLHeadElement DOM1 profile 8.0 ? 1.0 ? ? 1.0 Interface HTMLLinkElement DOM1 disabled 4.0 Yes 1.0 ? ? 1.0 charset ? ? href 8.0 ? ? hreflang 4.0 ? ? media ? ? rel ? ? rev ? ? target ? ? type ? ? Interface HTMLTitleElement DOM1 text 4.0 Yes 1.0 ? ? 1.0 Interface HTMLMetaElement DOM1 content 4.0 Yes 1.0 ? ? 1.0 httpEquiv ? ? name ? ? scheme 6.0 ? ? ? 2.0 Interface HTMLBaseElement DOM1 href 8.0 Yes 1.0 ? ? 2.0 target 4.0 ? ? Interface HTMLStyleElement DOM2 disabled ? ? 1.0 ? ? 1.0 media 4.0 Yes ? ? type ? ? Interface HTMLBodyElement DOM1 aLink 4.0 Yes 1.0 ? ? 1.0 background 8.0 ? ? bgColor 4.0 ? ? link ? ? text ? ? vLink ? ? Interface HTMLFormElement DOM1 action 8.0 Yes 1.9 ? ? 1.0 acceptEncoding ? ? 1.0 ? ? elements 3.0 Yes ? ? length ? ? name ? ? enctype 4.0 ? ? method 3.0 ? ? target ? ? submit() ? ? reset() 4.0 ? ? Interface HTMLSelectElement DOM1 selectedIndex 3.0 Yes 1.0 ? ? 1.0 length ? ? options ? ? name ? ? size 4.0 ? ? type ? ? value ? ? disabled 5.0 ? ? multiple ? ? form ? ? ? ? tabIndex ? ? ? ? add() ? ? ? ? remove() ? ? ? ? blur() 3.0 Yes ? ? focus() ? ? Interface HTMLOptGroupElement DOM1 disabled ? ? 1.0 ? ? 2.0 label No Yes ? ? Interface HTMLOptionElement DOM1 form 4.0 Yes 1.0 ? ? 1.0 defaultSelected ? ? text ? ? index ? ? ? ? disabled ? ? ? ? label 6.0 Yes ? ? 2.0 selected 4.0 ? ? 1.0 value ? ? Interface HTMLInputElement DOM1 defaultValue 3.0 Yes 1.0 ? ? 1.0 defaultChecked ? ? form ? ? accept ? ? ? ? accesskey ? ? ? ? align ? ? ? ? alt ? ? ? ? checked 3.0 Yes ? ? disabled 5.0 ? ? maxLength 4.0 ? ? 2.0 name 3.0 ? ? 1.0 readOnly 4.0 ? ? size ? ? src 1.9 ? ? tabIndex ? ? 1.0 ? ? type 4.0 Yes ? ? useMap ? ? ? ? value 3.0 Yes ? ? blur() ? ? focus() ? ? select() ? ? click() ? ? Interface HTMLTextAreaElement DOM1 defaultValue 3.0 Yes 1.0 ? ? 1.0 form ? ? accesskey ? ? ? ? cols 4.0 Yes ? ? disabled 5.0 ? ? name 3.0 ? ? readOnly 4.0 ? ? rows ? ? tabIndex ? ? ? ? type 4.0 Yes ? ? value 3.0 ? ? blur() ? ? focus() ? ? select() ? ? Interface HTMLButtonElement DOM1 form 3.0 Yes 1.0 ? ? 1.0 accesskey ? ? ? ? disabled 5.0 Yes ? ? name 3.0 ? ? tabIndex ? ? ? ? type 3.0 Yes ? ? value ? ? Interface HTMLLabelElement DOM1 form 6.0 Yes 1.0 ? ? 1.0 accesskey 5.0 ? ? htmlFor 4.0 ? ? Interface HTMLFieldSetElement DOM1 form 5.0 Yes 1.0 ? ? 1.0 Interface HTMLLegendElement DOM1 form 5.0 Yes 1.0 ? ? 1.0 accesskey ? ? ? ? align 5.0 Yes ? ? Interface HTMLUListElement DOM1 compact 4.0 Yes 1.0 ? ? 1.0 type ? ? Interface HTMLOListElement DOM1 compact 4.0 Yes 1.0 ? ? 1.0 start ? ? type ? ? Interface HTMLDListElement DOM1 compact 4.0 Yes 1.0 ? ? 1.0 Interface HTMLLIElement DOM1 type 4.0 Yes 1.0 ? ? 1.0 value ? ? Interface HTMLDivElement DOM1 align ? ? 1.0 ? ? 1.0 Interface HTMLParagraphElement DOM1 align ? ? 1.0 ? ? 1.0 Interface HTMLHeadingElement DOM1 align 4.0 Yes 1.0 ? ? 1.0 Interface HTMLQuoteElement DOM1 cite 8.0 Yes 1.0 ? ? 1.0 Interface HTMLPreElement DOM1 width ? ? 1.0 ? ? 1.0 Interface HTMLBRElement DOM1 clear 4.0 Yes 1.0 ? ? 1.0 Interface HTMLHRElement DOM1 align 4.0 Yes 1.0 ? ? 1.0 noShade ? ? size ? ? width ? ? Interface HTMLModElement DOM1 cite 8.0 ? 1.9 ? ? 1.0 dateTime ? ? 1.0 ? ? Interface HTMLAnchorElement DOM1 accesskey ? ? 1.0 ? ? 1.0 charset 6.0 Yes ? ? coords ? ? href 3.0 ? ? hreflang 6.0 ? ? name 4.0 ? ? rel ? ? rev ? ? shape 6.0 ? ? tabIndex ? ? ? ? target 3.0 Yes ? ? type 6.0 ? ? blur() ? ? ? ? focus() ? ? ? ? Interface HTMLImageElement DOM1 name 4.0 Yes 1.0 ? ? 1.0 align ? ? alt ? ? border ? ? height ? ? hspace ? ? isMap ? ? longDesc 8.0 ? ? ? 2.0 src 4.0 Yes ? ? 1.0 useMap ? ? vspace ? ? width ? ? Interface HTMLObjectElement DOM1 form ? ? 1.0 ? ? 1.0 code 4.0 Yes ? ? align ? ? archive ? ? ? ? border ? ? ? ? codeBase 8.0 Yes ? ? codeType 4.0 ? ? data 8.0 ? ? declare ? ? ? ? 2.0 height 4.0 Yes ? ? 1.0 hspace ? ? name ? ? standby ? ? ? ? tabIndex ? ? ? ? type 4.0 Yes ? ? useMap ? ? ? ? vspace 4.0 Yes ? ? width ? ? DOM2 contentDocument No ? ? 2.0 Interface HTMLParamElement DOM1 name ? ? 1.0 ? ? 1.0 type ? ? ? ? value ? ? ? ? valueType No ? ? ? Interface HTMLMapElement DOM1 areas 4.0 Yes 1.0 ? ? 1.0 name ? ? Interface HTMLAreaElement DOM1 accesskey ? ? 1.0 ? ? 1.0 alt 4.0 Yes ? ? coords ? ? hrefs ? ? ? ? noHrefs ? ? ? ? shape 4.0 Yes ? ? tabIndex ? ? ? ? target 4.0 Yes ? ? Interface HTMLScriptElement DOM1 text 4.0 0 1.0 ? ? 1.0 htmlFor (reserved for future use) Yes ? ? No event (reserved for future use) ? ? 2.0 charset ? ? ? ? 1.0 defer 4.0 Yes ? ? src 8.0 ? ? type 4.0 ? ? target ? ? ? ? Interface HTMLTableElement DOM1 caption 4.0 Yes 1.0 ? ? 1.0 tHead ? ? tFoot ? ? rows ? ? tBodies ? ? align ? ? bgColor ? ? border ? ? cellPadding No ? cellSpacing ? ? frame ? ? rules No ? ? summary 6.0 ? ? width 4.0 Yes ? ? createTHead() ? ? deleteTHead() ? ? createTFoot() ? ? deleteTFoot() ? ? createCaption() ? ? deleteCaption() ? ? insertRow() ? ? deleteRow() ? ? Interface HTMLTableCaptionElement DOM1 align 5.0 Yes 1.0 ? ? 1.0 Interface HTMLTableColElement DOM1 align 4.0 Yes 1.0 ? ? 1.0 ch 6.0 No ? ? 2.0 chOff ? ? span 5.0 Yes ? ? 1.0 vAlign 4.0 ? ? width 5.0 0 ? ? Interface HTMLTableSectionElement DOM1 align 4.0 Yes 1.0 ? ? 1.0 ch 6.0 No ? ? 2.0 chOff ? ? vAlign 4.0 Yes ? ? 1.0 rows ? ? insertRow() ? ? deleteRow() ? ? Interface HTMLTableRowElement DOM1 rowIndex 4.0 Yes 1.0 ? ? 1.0 sectionRowIndex ? ? cells ? ? align ? ? bgColor ? ? ch 6.0 No ? ? 2.0 chOff ? ? vAlign 4.0 Yes ? ? 1.0 insertCell() ? ? deleteCell() ? ? Interface HTMLTableCellElement DOM1 cellIndex 4.0 Yes 1.0 Incorrect ? 1.0 abbr 6.0 ? ? 2.0 align 4.0 ? ? 1.0 axis 6.0 ? ? bgColor 4.0 ? ? ch 6.0 No ? ? 2.0 chOff ? ? colSpan 4.0 Yes ? ? 1.0 headers 6.0 ? ? height 4.0 ? ? noWrap ? ? rowSpan ? ? scope ? ? ? ? vAlign 4.0 Yes ? ? width ? ? Interface HTMLFrameSetElement DOM1 cols 4.0 Yes 1.0 ? ? 1.0 rows ? ? Interface HTMLFrameElement DOM1 frameBorder 4.0 Yes 1.0 ? ? 1.0 longDesc 8.0 ? ? marginHeight 6.0 ? ? marginWidth ? ? name 4.0 ? ? noResize ? ? scrolling ? ? src 8.0 ? ? DOM2 contentDocument No Yes 1.0 ? ? 1.0 Interface HTMLIFrameSetElement DOM1 align 4.0 Yes 1.0 ? ? 1.0 frameBorder ? ? ? ? height 4.0 Yes ? ? longDesc 8.0 ? ? marginHeight 4.0 ? ? marginWidth ? ? name ? ? scrolling ? ? src 8.0 ? ? width 4.0 ? ? DOM2 contentDocument No ? ? Trident HTML notes
- profile, href, background, action, cite, longDesc, codebase, data, src — Prior to version 8.0 relative URLs were not resolved to full URLs.[t 3]
WebKit HTML notes
- cellIndex — Always return zero.[w 1]
Presto HTML notes
- text — Opera 8 and lower returned data at
src
, when it 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 Tasman Gecko WebKit KHTML Presto Interface StyleSheet DOM2 type 6.0 ? 1.0 Yes ? 2.0 disabled ? ? ownerNode No ? ? parentStyleSheet 6.0 ? ? href 8.0 ? ? title 6.0 ? ? media Incorrect ? ? Interface StyleSheetList DOM2 length 6.0 ? 1.0 Yes ? 2.0 item() ? ? Interface MediaList DOM2 mediaText No ? 1.0 Yes ? 2.0 length ? ? item() ? ? deleteMedium() ? ? appendMedium() ? ? Interface LinkStyle DOM2 sheet No ? 1.0 No ? 2.0 Interface DocumentStyle DOM2 styleSheets No ? 1.0 No ? 2.0 Trident Style (Style Sheets) notes
- href — Prior to version 8.0 relative URLs were not resolved to full URLs.[t 3]
- 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.
Trident Tasman Gecko WebKit KHTML Presto Interface CSSStyleSheet DOM2 ownerRule No ? 1.0 ? ? 2.0 cssRules Yes 1.3 ? insertRule() No No ? deleteRule() ? Interface StyleSheetList DOM2 length 6.0 ? 1.0 ? ? 2.0 item() ? ? ? Interface CSSRuleList DOM2 length No ? 1.0 ? ? 2.0 item() ? ? ? Interface CSSRule DOM2 type No ? 1.0 ? ? 2.0 cssText Yes ? ? parentStyleSheet 1.3 ? parentRule ? ? ? Interface CSSStyleRule DOM2 selectorText 6.0 Yes 1.0 1.3 ? 2.0 style No ? ? ? Interface CSSMediaRule DOM2 media No ? 1.0 ? ? 2.0 cssRules ? ? ? insertRule() ? ? ? deleteRule() ? ? ? Interface CSSFontFaceRule DOM2 style No ? 1.9.1[g 3] ? ? 2.0 Interface CSSPageRule DOM2 selectorText No ? No[g 4] ? ? 2.0 style ? ? ? Interface CSSImportRule DOM2 href No Yes 1.0 1.3 ? 2.0 media ? ? ? styleSheet ? ? ? Interface CSSCharsetRule DOM2 encoding No ? 1.0 ? ? 2.0 Interface CSSUnknownRule DOM2 (no properties) No ? No[g 5] ? ? 2.0 Interface CSSStyleDeclaration DOM2 cssText No ? 1.0 ? ? 2.0 length ? ? ? parentRule ? ? ? getPropertyValue() Yes 1.3 ? 1.0 getPropertyCSSValue() ? No[g 6] ? ? 2.0 removeProperty() No 1.0 1.3 ? 1.0 getPropertyPriority() Incorrect ? ? 2.0 setProperty() Yes 1.3 ? 1.0 item() ? ? ? 2.0 Interface CSSValue DOM2 cssText No ? No[g 6] ? ? No cssValueType ? ? ? Interface CSSPrimitiveValue DOM2 primitiveType No ? No[g 7] ? ? No setFloatValue() ? No ? ? getFloatValue() ? ? ? setStringValue() ? ? ? getStringValue() ? ? ? getCounterValue() ? ? ? getRectValue() ? ? ? getRGBColorValue() ? ? ? Interface CSSValueList DOM2 length No ? No ? ? No item() ? ? ? Interface RGBColor DOM2 red No ? No ? ? No green ? ? ? blue ? ? ? Interface Rect DOM2 top No ? No ? ? No right ? ? ? bottom ? ? ? left ? ? ? Interface Counter DOM2 identifier No ? No ? ? No listStyle ? ? ? separator ? ? ? Interface ViewCSS DOM2 getComputedStyle() No No 1.0 No ? 1.0 Interface DocumentCSS DOM2 getOverrideStyle() No ? No[g 8] ? ? No Interface DOMImplementationCSS DOM2 createCSSStyleSheet() No ? No[g 9] ? ? No Interface ElementCSSInlineStyle DOM2 style 6.0 Yes 1.0 1.3 Yes 1.0 Tasman Style (CSS Fundamental) notes
- getPropertyPriority() — Returns
!important
instead ofimportant
.
Style (CSS Extended)
The interfaces found within this section are not mandatory.
Trident Tasman Gecko WebKit KHTML Presto Interface CSS2Properties DOM2 Support this interface 4.0 Yes 1.0 ? ? 1.0 Properties Please refer to Comparison of layout engines (Cascading Style Sheets) for the comparison of CSS properties. 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 Tasman Gecko WebKit KHTML Presto Interface EventTarget DOM2 addEventListener() 5.0[t 4] No 1.0 Yes Yes 1.0 removeEventListener() dispatchEvent() ? ? Interface EventListener DOM2 handleEvent() ? ? ? ? ? 1.0 Interface Event DOM2 type 4.0 Yes 1.0 ? ? 1.0 target No 1.3 Incorrect ? currentTarget No 1.0 ? ? eventPhase ? ? bubbles ? ? cancelable ? ? timeStamp Yes ? ? stopPropagation() 1.0 ? ? preventDefault() ? ? initEvent() ? ? Exception EventException DOM2 code No No 1.0 ? ? 1.0 Interface DocumentEvent DOM2 createEvent() No No 1.0 ? ? 1.0 Interface UIEvent DOM2 view No No No[g 10] ? ? 1.0 detail ? ? initUIEvent() ? ? Events for interface UIEvent DOM2 DOMFocusIn No No No[g 10] ? ? 1.0 DOMFocusOut ? ? DOMActivate ? ? Interface MouseEvent DOM2 screenX 4.0 Yes 1.0 Yes ? 1.0 screenY ? clientX Incorrect ? clientY Incorrect ? ctrlKey Yes ? shiftKey ? altKey ? metaKey No No ? button Incorrect Incorrect Incorrect ? 1.0 relatedTarget No No Yes ? 1.0 initMouseEvent() ? ? ? ? Events for interface MouseEvent DOM2 click 4.0 Yes 1.0 ? ? 1.0 mousedown ? ? mouseup ? ? mouseover ? ? mousemove ? ? mouseout ? ? Interface MutationEvent DOM2 relatedNode No No 1.0 ? ? 1.0 prevValue ? ? newValue ? ? attrName ? ? attrChange ? ? initMutationEvent ? ? Events for interface MutationEvent DOM2 DOMSubtreeModified 5.0[t 5] No 1.9 Yes Partial No DOMNodeInserted 1.0 No 1.0 DOMNodeRemoved DOMNodeRemovedFromDocument No[g 11] DOMNodeInsertedIntoDocument Yes DOMAttrModified 1.0 No No DOMCharacterDataModified Yes Events for HTML DOM2 load 4.0 Yes 1.0 ? ? 2.0 unload ? ? abort ? ? No error ? ? 2.0 select ? ? change ? ? submit ? ? reset ? ? focus ? ? blur ? ? resize ? ? scroll ? ? 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 — Is relative to the system start instead of to the 1st of January 1970.[g 12]
WebKit 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
andpageY
. - button — Does not use W3C values.
KHTML Events notes
- DOMSubtreeModified — Not triggered when an element is removed from the subtree.
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.
Trident Tasman Gecko WebKit KHTML Presto Interface AbstractView DOM2 document 6.0 ? 1.0 ? ? 1.0 Interface DocumentView DOM2 defaultView No ? 1.0 ? ? 1.0 Trident notes
- defaultView — Trident does not support the defaultView property for documents, but it supports another property with the same meaning which is parentWindow.
Traversal
The interfaces found within this section are not mandatory. Its interfaces provide easy-to-use, robust, selective traversal of a document's contents.
Trident Tasman Gecko WebKit KHTML Presto Interface NodeIterator DOM2 root No ? 1.9.1 ? ? 1.0 whatToShow ? ? ? filter ? ? ? expandEntityReferences ? ? ? nextNode() Yes ? ? ? 2.0 previousNode() ? ? ? detach() No ? ? ? 1.0 Interface NodeFilter DOM2 acceptNode() No ? 1.0 ? ? 1.0 Interface TreeWalker DOM2 root No ? 1.0 ? ? 1.0 whatToShow ? ? ? filter ? ? ? expandEntityReferences ? ? ? currentNode ? ? ? parentNode() ? ? ? firstChild() ? ? ? lastChild() ? ? ? previousSibling() ? ? ? nextSibling() ? ? ? previousNode() ? ? ? nextNode() ? ? ? Interface DocumentTraversal DOM2 createNodeIterator() No ? 1.9.1 ? ? 1.0 createTreeWalker() ? 1.0 ? ? 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.
Trident Tasman Gecko WebKit KHTML Presto Interface Range DOM2 startContainer No ? 1.0 Yes ? 1.0 startOffset ? ? endContainer ? ? endOffset ? ? collapsed ? ? commonAncestorContainer ? ? setStart() ? ? setEnd() ? ? setStartBefore() ? ? setStartAfter() ? ? setEndBefore() ? ? setEndAfter() ? ? collapse() ? ? selectNode() ? ? selectNodeContents() ? ? compareBoundaryPoints() ? ? deleteContents() ? ? extractContents() ? ? cloneContents() ? ? insertNode() ? ? surroundContents() ? ? cloneRange() ? ? toString() ? ? detach() ? ? Interface DocumentRange DOM2 createRange() No ? 1.0 No ? 1.0 Exception RangeException DOM2 code No ? 1.0 Yes ? 1.0 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.
Trident Tasman Gecko WebKit KHTML Presto Exception LSException DOM3 code No No No[g 13] No No 1.0 Interface DOMImplementationLS DOM3 createLSParser() No No No No No 1.0 createLSSerializer() createLSInput() createLSOutput() Interface LSParser DOM3 domConfig No No No No No 1.0 filter async busy parse() parseURI() parseWithContext() abort() Interface LSInput DOM3 characterStream No No No No No 1.0 byteStream stringData systemId publicId baseURI encoding certifiedText Interface LSResourceResolver DOM3 resolveResource() No No No No No No Interface LSParserFilter DOM3 whatToShow No No No No No No startElement() 2.0 acceptNode() Interface LSProgressEvent DOM3 input No No No No No No position totalSize Interface LSLoadEvent DOM3 newDocument No No No No No 2.0 input No Interface LSSerializer DOM3 domConfig No No No No No 1.0 newLine filter write() writeToURI() writeToString() Interface LSOutput DOM3 characterStream No No No No No 1.0 byteStream systemId encoding Interface LSSerializerFilter DOM3 whatToShow No No No No No No 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."
Trident Tasman Gecko WebKit KHTML Presto Exception ExceptionVAL DOM3 code No No No No No No Interface DocumentEditVAL DOM3 continuousValidityChecking No No No No No No domConfig getDefinedElements() validateDocument() Interface NodeEditVAL DOM3 defaultValue No No No No No No enumeratedValues canInsertBefore() canRemoveChild() canReplaceChild() canAppendChild() nodeValidity() Interface ElementEditVAL DOM3 allowedChildren No No No No No No allowedFirstChildren allowedParents allowedNextSiblings allowedPreviousSiblings allowedAttributes requiredAttributes contentType canSetTextContent canSetAttribute canSetAttributeNode canSetAttributeNS canRemoveAttribute canRemoveAttributeNS canRemoveAttributeNode isElementDefined isElementDefinedNS Interface CharacterDataEditVAL DOM3 isWhitespaceOnly() No No No No No No canSetData() canAppendData() canReplaceData() canInsertData() canDeleteData() References
Trident references
- ^ a b c d e f g h i j k l m n Internet Explorer Platform Preview Guide for Developers, Microsoft, http://msdn.microsoft.com/en-us/ie/ff468705.aspx
- ^ "getElementById Method", HTML and DHTML Reference (Microsoft), http://msdn.microsoft.com/en-us/library/ms536437(VS.85).aspx, retrieved 2009-03-05
- ^ a b Leithead, Travis, HTML and DOM Standards Compliance in IE8 Beta 1, Microsoft, http://blogs.msdn.com/ie/archive/2008/04/10/html-and-dom-standards-compliance-in-ie8-beta-1.aspx
- ^ http://ie.microsoft.com/testdrive/HTML5/50ComparingEventModels/Default.html
- ^ Internet Explorer 9 Guide for Developers - DOM L2 and L3 Events, Microsoft, http://msdn.microsoft.com/en-us/ie/hh410104#_DOM_Events
Gecko references
- ^ Bug 56758 - Attr appendChild, insertBefore, removeChild, replaceChild fail, Mozilla, https://bugzilla.mozilla.org/show_bug.cgi?id=56758
- ^ Bug 15118 - expat doesn't send notifications for doctype.notations and doctype.entities, Mozilla, https://bugzilla.mozilla.org/show_bug.cgi?id=15118
- ^ Bug 70132 - Support @font-face, Mozilla, https://bugzilla.mozilla.org/show_bug.cgi?id=70132
- ^ Bug 35615 - Implement CSSPageRule, Mozilla, https://bugzilla.mozilla.org/show_bug.cgi?id=35615
- ^ Bug 35618 - (DOM2 CSS) CSSUnknownRule, Mozilla, https://bugzilla.mozilla.org/show_bug.cgi?id=35618
- ^ a b Bug 62682 - CSSStyleDeclaration.getPropertyCSSValue() not implemented, always returns nsnull, Mozilla, https://bugzilla.mozilla.org/show_bug.cgi?id=62682
- ^ Bug 132475 - nsROCSSPrimitiveValue::SetFoo() methods should return an nsresult, Mozilla, https://bugzilla.mozilla.org/show_bug.cgi?id=132475
- ^ Bug 45424 - implement getOverrideStyle(), Mozilla, https://bugzilla.mozilla.org/show_bug.cgi?id=45424
- ^ Bug 63850 - document.implementation.createCSSStyleSheet() Not Implemented, Mozilla, https://bugzilla.mozilla.org/show_bug.cgi?id=63850
- ^ a b Bug 60212 - RFE: DOM 2 UIEvent interface, Mozilla, https://bugzilla.mozilla.org/show_bug.cgi?id=60212
- ^ Bug 74219 - Implement NodeInsertedIntoDocument, NodeRemovedFromDocument, Mozilla, https://bugzilla.mozilla.org/show_bug.cgi?id=74219
- ^ Bug 77992 - Event.timeStamp should be relative to 1st January 1970 rather than the system start, Mozilla, https://bugzilla.mozilla.org/show_bug.cgi?id=77992
- ^ Bug 155749 - Implement DOM3 Load/Save, Mozilla, https://bugzilla.mozilla.org/show_bug.cgi?id=155749
Webkit references
Presto references
Other references
- "W3C", Document Object Model (DOM) Conformance Test Suites, http://www.w3.org/DOM/Test/, retrieved May 1, 2005
- "David Baron's Homepage", DOM Test Pages, http://dbaron.org/dom/test/, retrieved May 1, 2005
- "Jeremie's Personal Site", DOM Level 1 Tests, http://www.jeremie.com/Dev/DOM/, retrieved May 1, 2005
- "Mozilla Developer Documentation", DOM Support in Mozilla, http://www.mozilla.org/docs/dom/mozilla/, retrieved May 1, 2005
- "Mozilla Developer Documentation", What does each DOM Level bring?, http://www.mozilla.org/docs/dom/reference/levels.html, retrieved May 1, 2005
- "XULPlanet.com", Mozilla Object Reference, http://xulplanet.com/references/objref/, retrieved May 1, 2005
- "Fabian Guisset", Mozilla DOM Status Update, http://guisset.tripod.com/mozilla/DOMStatus.html, retrieved May 1, 2005
- "Opera Documentation", Web Specifications Supported in Opera, http://www.opera.com/docs/specs/, retrieved May 1, 2005
- "JavaScript Bible, 5th Edition", Appendix A: JS/DOM Object Quick Reference, http://www.dannyg.com/ref/jsquickref.html, retrieved May 5, 2005
External links
Web browser engines Actively developed web browser engines Inactive web browser engines Comparison of web browser engines HTML (Non-standard HTML) · HTML5 (Media · Canvas) · XML (XHTML (1.1) · MathML · SVG) · CSS · ECMAScript · DOM · Graphics · TypographyCategories:- Software comparisons
- Web browser engines
Wikimedia Foundation. 2010.