COMPARISON OF LAYOUT ENGINES (DOM)


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; 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.

Contents
General overview
Core (Fundamental)
Trident Core (Fundamental) notes
Gecko Core (Fundamental) notes
Presto Core (Fundamental) notes
Core (Extended)
HTML
Trident HTML notes
WebCore HTML notes
Presto HTML notes
Style (Style Sheets)
Trident Style (Style Sheets) notes
Style (CSS Fundamental)
Tasman Style (CSS Fundamental) notes
Style (CSS Extended)
Events
Trident Events notes
Tasman Events notes
Gecko Events notes
WebCore Events notes
Presto Events notes
Views
Trident notes
Traversal
Range
Load and Save
Validation
References
See also
External links

General overview


Trident Tasman Gecko WebCore KHTML Presto iCab
DOM1
DOM2
DOM3

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 WebCore [1] KHTML Presto iCab
Exception DOMException
DOM1 code ? ? ? ? ?
Interface DOMStringList
DOM3 length rowspan="3" rowspan="3" rowspan="3" rowspan="3" ? rowspan="3" ?
contains() ? ?
item() ? ?
Interface NameList
DOM3 length rowspan="5" rowspan="5" rowspan="5" rowspan="5" rowspan="5" rowspan="5" rowspan="5"
getName()
getNamespaceURI()
contains()
containsNS()
Interface DOMImplementationList
DOM3 length rowspan="2" rowspan="2" rowspan="2" rowspan="2" rowspan="2" rowspan="2" rowspan="2"
item()
Interface DOMImplementationSource
DOM3 getDOMImplementation() rowspan="2" rowspan="2" rowspan="2" rowspan="2" rowspan="2" rowspan="2" rowspan="2"
getDOMImplementationList()
Interface DOMImplementation
DOM1 hasFeature() ? ? ?
DOM2 createDocumentType() rowspan="2" rowspan="2" rowspan="2" rowspan="2" ? rowspan="2" ?
createDocument() ? ?
DOM3 getFeature() ? ?
Interface DocumentFragment
DOM1 (no properties) ? ? ?
Interface Document
DOM1 doctype rowspan="12" ? ?
implementation ? ?
documentElement ? ?
createElement() ? ?
createDocumentFragment() ? ?
createTextNode() ? ?
createComment() ? ?
createCDATASection() ? ?
createProcessingInstruction() ? ? ? ?
createAttribute() ? ?
createEntityReference() ? ? ? ?
getElementsByTagName() ? ?
DOM2 importNode() rowspan="5" rowspan="5" ? ?
createElementNS() ? ?
createAttributeNS() ? ?
getElementsByTagNameNS() ? ?
getElementById() ? ?
DOM3 inputEncoding rowspan="10" rowspan="10" rowspan="10" ? ?
xmlEncoding ? ?
xmlStandalone ? ?
xmlVersion ? ?
domConfig ? ?
strictErrorChecking ? ?
documentURI ? ?
adoptNode() ? ?
normalizeDocument() ? ?
renameNode() ? ?
Interface Node
DOM1 nodeName rowspan="17" rowspan="17" ? rowspan="17" ?
nodeValue ? ?
nodeType ? ?
parentNode ? ?
childNodes ? ?
firstChild ? ?
lastChild ? ?
previousSibling ? ?
nextSibling ? ?
attributes ? ?
ownerDocument ? ?
insertBefore() ? ?
replaceChild() ? ?
removeChild() ? ?
appendChild() ? ?
hasChildNodes() ? ?
cloneNode() ? ?
DOM2 namespaceURI rowspan="5" rowspan="5" rowspan="5" ? ?
prefix ? ?
localName ? ?
isSupported() ? ?
hasAttributes() ? ?
DOM3 baseURI rowspan="11" rowspan="11" ? ?
textContent ? ?
compareDocumentPosition() ? ?
isSameNode() ? ?
lookupPrefix() ? ?
isDefaultNamespace() ? ?
lookupNamespaceURI() ? ?
isEqualNode() ? ?
getFeature() ? ?
setUserData() ? ?
getUserData() ? ?
Interface NodeList
DOM1 length rowspan="2" rowspan="2" rowspan="2" rowspan="2" ? rowspan="2" ?
item() ? ?
Interface NamedNodeMap
DOM1 length rowspan="5" rowspan="5" rowspan="5" rowspan="5" ? rowspan="5" ?
getNamedItem() ? ?
setNamedItem() ? ?
removeNamedItem() ? ?
item() ? ?
DOM2 getNamedItemNS() rowspan="3" rowspan="3" rowspan="3" rowspan="3" ? rowspan="3" ?
setNamedItemNS() ? ?
removeNamedItemNS() ? ?
Interface CharacterData
DOM1 data rowspan="7" rowspan="7" rowspan="7" rowspan="7" ? rowspan="7" ?
length ? ?
substringData() ? ?
appendData() ? ?
insertData() ? ?
deleteData() ? ?
replaceData() ? ?
Interface Attr
DOM1 name ? rowspan="3" ? rowspan="3" ?
specified ?
value ? ? ?
DOM2 ownerElement ? ? ?
DOM3 schemaTypeInfo rowspan="2" rowspan="2" rowspan="2" rowspan="2" ? rowspan="2" ?
isId ? ?
Interface Element
DOM1 tagName rowspan="9" rowspan="9" ? rowspan="9" ?
getAttribute() ? ?
setAttribute() ? ?
removeAttribute() ? ?
getAttributeNode() ? ?
setAttributeNode() ? ?
removeAttributeNode() ? ?
getElementsByTagName() ? ?
normalize() ? ?
DOM2 getAttributeNS() rowspan="8" rowspan="8" rowspan="8" ? rowspan="8" ?
setAttributeNS() ? ?
removeAttributeNS() ? ?
getAttributeNodeNS() ? ?
setAttributeNodeNS() ? ?
getElementsByTagNameNS() ? ?
hasAttribute() ? ?
hasAttributeNS() ? ?
DOM3 schemaTypeInfo rowspan="4" rowspan="4" rowspan="4" rowspan="4" ? rowspan="4" ?
setIdAttribute() ? ?
setIdAttributeNS() ? ?
setIdAttributeNode() ? ?
Interface Text
DOM1 splitText() ? ?
DOM3 isElementContentWhitespace rowspan="3" rowspan="3" rowspan="3" rowspan="3" ? ?
wholeText ? ?
replaceWholeText() ? ?
Interface Comment
DOM1 (no properties) ? ?
Interface TypeInfo
DOM3 typeName rowspan="3" rowspan="3" rowspan="3" rowspan="3" rowspan="3" rowspan="3" rowspan="3"
typeNamespace
isDerivedFrom()
Interface UserDataHandler
DOM3 handle()
Interface DOMError
DOM3 severity rowspan="6" rowspan="6" rowspan="6" rowspan="6" rowspan="6" rowspan="6"
message
type
relatedException
relatedData
location
Interface DOMErrorHandler
DOM3 handleError()
Interface DOMLocator
DOM3 lineNumber rowspan="6" rowspan="6" rowspan="6" rowspan="6" rowspan="6" rowspan="6" rowspan="6"
columnNumber
byteOffset
utf16Offset
relatedNode
uri
Interface DOMConfiguration
DOM3 parameterNames rowspan="4" rowspan="4" rowspan="4" rowspan="4" ? rowspan="4" ?
setParameter() ? ?
getParameter() ? ?
canSetParameter() ? ?

Trident Core (Fundamental) notes

# getElementById() — returns elements with name attribute set to value being found, not only id. Present in IE7. [1]
# 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. getAttribute and setAttribute with 'style' as their parameter don't work, but the inline style can be retrieved by setting the non-standard ''iFlags'' parameter to 2 (i.e. by calling element.getAttribute('style',2)), or accessed using the Node.style property. [2]
# AttributeNode.specified — Does not set specified to true if ownerElement should be null [3].
# Node.isSameNode — isSameNode is only supported for XML documents, not HTML ones.
Gecko Core (Fundamental) notes

# insertBefore(), replaceChild(), removeChild(), appendChild() — Fails on Attr nodes [4]. appendChild does not work as expected for DocumentFragment nodes prior to 1.8 [5].
# createEntityReference() — Supported, but returns null when the method is checked [6].
# AttributeNode.specified — Does not set specified to true if ownerElement is null [7]. As it also does not create Attribute Nodes for default values specified in the DTD, it renders this property absolutely useless.
Presto Core (Fundamental) notes

# getElementById() — returns elements with name attribute set to value being found, not only id [8].
# URI attribute value — In versions prior to Opera 9, all URI attribute values are resolved to full URI. Hence the value from getAttribute() and getAttributeNode() 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.

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 WebCore [1] KHTML Presto iCab
Interface CDATASection
DOM1 (no properties) ? ?
Interface DocumentType
DOM1 name ? ?
entities [9] ? ?
notations [10] ? ?
DOM2 publicId ? ?
systemId ? ?
internalSubset ? ?
Interface Notation
DOM1 publicId ? ?
systemId ? ?
Interface Entity
DOM1 publicId ? ?
systemId ? ?
notationName ? ?
DOM3 inputEncoding ? ?
xmlEncoding ? ?
xmlVersion ? ?
Interface EntityReference
DOM1 (no properties) ? ?
Interface ProcessingInstruction
DOM1 target ? ?
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 WebCore KHTML Presto iCab
Interface HTMLCollection
DOM1 length ? ? ? ? ?
item() ? ? ? ? ?
namedItem() ? ? ? ? ?
Interface HTMLOptionsCollection
DOM2 length ? ? ? ? ?
item() ? ? ? ? ?
namedItem() ? ? ? ? ?
Interface HTMLDocument
DOM1 title ? ? ?
referrer ? ? ?
domain ? ? ?
URL ? ? ?
body ? ? ?
images ? ? ?
applets ? ? ?
links ? ? ?
forms ? ? ?
anchors ? ? ?
cookie ? ? ?
open() ? ? ?
close() ? ? ?
write() ? ? ?
writeln() ? ? ?
getElementsByName() ? ? ? ? ?
Interface HTMLElement
DOM1 id ? ? ?
title ? ? ?
lang ? ? ?
dir ? ? ?
className ? ? ?
Interface HTMLHtmlElement
DOM1 version ? ? ? ?
Interface HTMLHeadElement
DOM1 profile ? ? ? ?
Interface HTMLLinkElement
DOM1 disabled ? ? ?
charset ? ? ?
href ? ? ?
hreflang ? ? ?
media ? ? ?
rel ? ? ?
rev ? ? ?
target ? ? ?
type ? ? ?
Interface HTMLTitleElement
DOM1 text ? ? ?
Interface HTMLMetaElement
DOM1 content ? ? ?
httpEquiv ? ? ?
name ? ? ?
scheme ? ? ? ?
Interface HTMLBaseElement
DOM1 href ? ? ?
target ? ? ?
Interface HTMLStyleElement
DOM2 disabled ? ? ? ? ?
media ? ? ?
type ? ? ?
Interface HTMLBodyElement
DOM1 aLink ? ? ?
background ? ? ?
bgColor ? ? ?
link ? ? ?
text ? ? ?
vLink ? ? ?
Interface HTMLFormElement
DOM1 elements ? ? ?
length ? ? ?
name ? ? ?
acceptEncoding ? ? ? ? ?
action ? ? ?
enctype ? ? ?
method ? ? ?
target ? ? ?
submit() ? ? ?
reset() ? ? ?
Interface HTMLSelectElement
DOM1 type ? ? ?
selectedIndex ? ? ?
value ? ? ?
length ? ? ?
form ? ? ? ? ?
options ? ? ?
disabled ? ? ?
multiple ? ? ?
name ? ? ?
size ? ? ?
tabIndex ? ? ? ? ?
add() ? ? ? ? ?
remove() ? ? ? ? ?
blur() ? ? ?
focus() ? ? ?
Interface HTMLOptGroupElement
DOM1 disabled ? ? ? ? ?
label ? ? ?
Interface HTMLOptionElement
DOM1 form ? ? ?
defaultSelected ? ? ?
text ? ? ?
index ? ? ? ? ?
disabled ? ? ? ? ?
label ? ? ?
selected ? ? ?
value ? ? ?
Interface HTMLInputElement
DOM1 defaultValue ? ? ?
defaultChecked ? ? ?
form ? ? ?
accept ? ? ? ? ?
accesskey ? ? ? ? ?
align ? ? ? ? ?
alt ? ? ? ? ?
checked ? ? ?
disabled ? ? ?
maxLength ? ? ?
name ? ? ?
readOnly ? ? ?
size ? ? ?
src ? ? ?
tabIndex ? ? ? ? ?
type ? ? ?
useMap ? ? ? ? ?
value ? ? ?
blur() ? ? ?
focus() ? ? ?
select() ? ? ?
click() ? ? ?
Interface HTMLTextAreaElement
DOM1 defaultValue ? ? ?
form ? ? ?
accesskey ? ? ? ? ?
cols ? ? ?
disabled ? ? ?
name ? ? ?
readOnly ? ? ?
rows ? ? ?
tabIndex ? ? ? ? ?
type ? ? ?
value ? ? ?
blur() ? ? ?
focus() ? ? ?
select() ? ? ?
Interface HTMLButtonElement
DOM1 form ? ? ?
accesskey ? ? ? ? ?
disabled ? ? ?
name ? ? ?
tabIndex ? ? ? ? ?
type ? ? ?
value ? ? ?
Interface HTMLLabelElement
DOM1 form ? ? ?
accesskey ? ? ?
htmlFor ? ? ?
Interface HTMLFieldSetElement
DOM1 form ? ? ?
Interface HTMLLegendElement
DOM1 form ? ? ?
accesskey ? ? ? ? ?
align ? ? ?
Interface HTMLUListElement
DOM1 compact ? ? ?
type ? ? ?
Interface HTMLOListElement
DOM1 compact ? ? ?
start ? ? ?
type ? ? ?
Interface HTMLDListElement
DOM1 compact ? ? ?
Interface HTMLLIElement
DOM1 type ? ? ?
value ? ? ?
Interface HTMLDivElement
DOM1 align ? ? ? ? ?
Interface HTMLParagraphElement
DOM1 align ? ? ? ? ?
Interface HTMLHeadingElement
DOM1 align ? ? ?
Interface HTMLQuoteElement
DOM1 cite ? ? ?
Interface HTMLPreElement
DOM1 width ? ? ? ? ?
Interface HTMLBRElement
DOM1 clear ? ? ?
Interface HTMLHRElement
DOM1 align ? ? ?
noShade ? ? ?
size ? ? ?
width ? ? ?
Interface HTMLModElement
DOM1 cite ? ? ? ?
dateTime ? ? ? ? ?
Interface HTMLAnchorElement
DOM1 accesskey ? ? ? ? ?
charset ? ? ?
coords ? ? ?
href ? ? ?
hreflang ? ? ?
name ? ? ?
rel ? ? ?
rev ? ? ?
shape ? ? ?
tabIndex ? ? ? ? ?
target ? ? ?
type ? ? ?
blur() ? ? ? ? ?
focus() ? ? ? ? ?
Interface HTMLImageElement
DOM1 name ? ? ?
align ? ? ?
alt ? ? ?
border ? ? ?
height ? ? ?
hspace ? ? ?
isMap ? ? ?
longDesc ? ? ? ?
src ? ? ?
useMap ? ? ?
vspace ? ? ?
width ? ? ?
Interface HTMLObjectElement
DOM1 form ? ? ? ? ?
code ? ? ?
align ? ? ?
archive ? ? ? ? ?
border ? ? ? ? ?
codeBase ? ? ?
codeType ? ? ?
data ? ? ?
declare ? ? ? ? ?
height ? ? ?
hspace ? ? ?
name ? ? ?
standby ? ? ? ? ?
tabIndex ? ? ? ? ?
type ? ? ?
useMap ? ? ? ? ?
vspace ? ? ?
width ? ? ?
DOM2 contentDocument ? ? ?
Interface HTMLParamElement
DOM1 name ? ? ? ? ?
type ? ? ? ? ?
value ? ? ? ? ?
valueType ? ? ? ?
Interface HTMLMapElement
DOM1 areas ? ? ?
name ? ? ?
Interface HTMLAreaElement
DOM1 accesskey ? ? ? ? ?
alt ? ? ?
coords ? ? ?
hrefs ? ? ? ? ?
noHrefs ? ? ? ? ?
shape ? ? ?
tabIndex ? ? ? ? ?
target ? ? ?
Interface HTMLScriptElement
DOM1 text 0 ? ? ?
htmlFor (reserved for future use) ? ? ?
event (reserved for future use) ? ? ?
charset ? ? ? ? ?
defer ? ? ?
src ? ? ?
type ? ? ?
target ? ? ? ? ?
Interface HTMLTableElement
DOM1 caption ? ? ?
tHead ? ? ?
tFoot ? ? ?
rows ? ? ?
tBodies ? ? ?
align ? ? ?
bgColor ? ? ?
border ? ? ?
cellPadding ? ?
cellSpacing ? ? ?
frame ? ? ?
rules ? ? ?
summary ? ? ?
width ? ? ?
createTHead() ? ? ?
deleteTHead() ? ? ?
createTFoot() ? ? ?
deleteTFoot() ? ? ?
createCaption() ? ? ?
deleteCaption() ? ? ?
insertRow() ? ? ?
deleteRow() ? ? ?
Interface HTMLTableCaptionElement
DOM1 align ? ? ?
Interface HTMLTableColElement
DOM1 align ? ? ?
ch ? ? ?
chOff ? ? ?
span ? ? ?
vAlign ? ? ?
width ? ? ?
Interface HTMLTableSectionElement
DOM1 align ? ? ?
ch ? ? ?
chOff ? ? ?
vAlign ? ? ?
rows ? ? ?
insertRow() ? ? ?
deleteRow() ? ? ?
Interface HTMLTableRowElement
DOM1 rowIndex ? ? ?
sectionRowIndex ? ? ?
cells ? ? ?
align ? ? ?
bgColor ? ? ?
ch ? ? ?
chOff ? ? ?
vAlign ? ? ?
insertCell() ? ? ?
deleteCell() ? ? ?
Interface HTMLTableCellElement
DOM1 cellIndex ? ?
abbr ? ? ?
align ? ? ?
axis ? ? ?
bgColor ? ? ?
ch ? ? ?
chOff ? ? ?
colSpan ? ? ?
headers ? ? ?
height ? ? ?
noWrap ? ? ?
rowSpan ? ? ?
scope ? ? ? ? ?
vAlign ? ? ?
width ? ? ?
Interface HTMLFrameSetElement
DOM1 cols ? ? ?
rows ? ? ?
Interface HTMLFrameElement
DOM1 frameBorder ? ? ?
longDesc ? ? ?
marginHeight ? ? ?
marginWidth ? ? ?
name ? ? ?
noResize 4.0 ? ? ?
scrolling ? ? ?
src ? ? ?
DOM2 contentDocument ? ? ?
Interface HTMLIFrameSetElement
DOM1 align ? ? ?
frameBorder ? ? ? ? ?
height ? ? ?
longDesc ? ? ?
marginHeight ? ? ?
marginWidth ? ? ?
name ? ? ?
scrolling ? ? ?
src ? ? ?
width ? ? ?
DOM2 contentDocument ? ? ?

Trident HTML notes

# profile, href, background, action, cite, longDesc, codebase, data, src — Relative URL was not resolved to full URL.
WebCore HTML notes

# cellIndex — Always return zero [11].
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 WebCore KHTML Presto iCab
Interface StyleSheet
DOM2 type ? rowspan="7" ? ?
disabled ? ? ?
ownerNode ? ? ?
parentStyleSheet ? ? ?
href ? ? ?
title ? ? ?
media ? ? ?
Interface StyleSheetList
DOM2 length ? rowspan="2" ? ?
item() ? ? ?
Interface MediaList
DOM2 mediaText ? rowspan="5" ? ?
length ? ? ?
item() ? ? ?
deleteMedium() ? ? ?
appendMedium() ? ? ?
Interface LinkStyle
DOM2 sheet ? ? ?
Interface DocumentStyle
DOM2 styleSheets ? ? ?

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.
Trident Tasman Gecko WebCore KHTML Presto iCab
Interface CSSStyleSheet
DOM2 ownerRule ? ? ? ?
cssRules ? ?
insertRule() ? ?
deleteRule() ? ?
Interface StyleSheetList
DOM2 length ? ? ? ?
item() ? ? ? ?
Interface CSSRuleList
DOM2 length ? ? ? ?
item() ? ? ? ?
Interface CSSRule
DOM2 type ? ? ? ?
cssText ? ? ?
parentStyleSheet ? ?
parentRule ? ? ? ?
Interface CSSStyleRule
DOM2 selectorText ? ?
style ? ? ? ?
Interface CSSMediaRule
DOM2 media ? ? ? ?
cssRules ? ? ? ?
insertRule() ? ? ? ?
deleteRule() ? ? ? ?
Interface CSSFontFaceRule
DOM2 style ? [12] ? ? ?
Interface CSSPageRule
DOM2 selectorText ? [13] ? ? ?
style ? ? ? ?
Interface CSSImportRule
DOM2 href ? ?
media ? ? ? ?
styleSheet ? ? ? ?
Interface CSSCharsetRule
DOM2 encoding ? ? ? ?
Interface CSSUnknownRule
DOM2 (no properties) ? [14] ? ? ?
Interface CSSStyleDeclaration
DOM2 cssText ? ? ? ?
length ? ? ? ?
parentRule ? ? ? ?
getPropertyValue() ? ?
getPropertyCSSValue() ? [15] ? ? ?
removeProperty() ? ?
getPropertyPriority() ? ? ?
setProperty() ? ?
item() ? ? ? ?
Interface CSSValue
DOM2 cssText ? [16] ? ? ?
cssValueType ? ? ? ?
Interface CSSPrimitiveValue
DOM2 primitiveType ? [17] ? ? ?
setFloatValue() ? ? ? ?
getFloatValue() ? ? ? ?
setStringValue() ? ? ? ?
getStringValue() ? ? ? ?
getCounterValue() ? ? ? ?
getRectValue() ? ? ? ?
getRGBColorValue() ? ? ? ?
Interface CSSValueList
DOM2 length ? ? ? ?
item() ? ? ? ?
Interface RGBColor
DOM2 red ? ? ? ?
green ? ? ? ?
blue ? ? ? ?
Interface Rect
DOM2 top ? ? ? ?
right ? ? ? ?
bottom ? ? ? ?
left ? ? ? ?
Interface Counter
DOM2 identifier ? ? ? ?
listStyle ? ? ? ?
separator ? ? ? ?
Interface ViewCSS
DOM2 getComputedStyle() ? ?
Interface DocumentCSS
DOM2 getOverrideStyle() ? [18] ? ? ?
Interface DOMImplementationCSS
DOM2 createCSSStyleSheet() ? [19] ? ? ?
Interface ElementCSSInlineStyle
DOM2 style ?

Tasman Style (CSS Fundamental) notes

# getPropertyPriority() — Returns !important instead of important.

Style (CSS Extended)


The interfaces found within this section are not mandatory.
Trident Tasman Gecko WebCore KHTML Presto iCab
Interface CSS2Properties
DOM2 Support this interface ? ? ?
Properties Please refer to comparison of layout engines (CSS) 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 WebCore KHTML Presto iCab
Interface EventTarget
DOM2 addEventListener() ? ? ?
removeEventListener() ? ? ?
dispatchEvent() ? ? ?
Interface EventListener
DOM2 handleEvent() ? ? ? ? ? ? ?
Interface Event
DOM2 type ? ? ?
target ? ?
currentTarget ? ? ?
eventPhase ? ? ?
bubbles ? ? ?
cancelable ? ? ?
timeStamp ? ? ?
stopPropagation() ? ? ?
preventDefault() ? ? ?
initEvent() ? ? ?
Exception EventException
DOM2 code ? ? ?
Interface DocumentEvent
DOM2 createEvent() ? ? ?
Interface UIEvent
DOM2 view [20] ? ? ?
detail ? ? ?
initUIEvent() ? ? ?
Events for interface UIEvent
DOM2 DOMFocusIn ? ? ?
DOMFocusOut ? ? ?
DOMActivate ? ? ?
Interface MouseEvent
DOM2 screenX ? ?
screenY ? ?
clientX ? ?
clientY ? ?
ctrlKey ? ?
shiftKey ? ?
altKey ? ?
metaKey ? ?
button ? ?
relatedTarget ? ?
initMouseEvent() ? ? ? ? ?
Events for interface MouseEvent
DOM2 click ? ? ?
mousedown ? ? ?
mouseup ? ? ?
mouseover ? ? ?
mousemove ? ? ?
mouseout ? ? ?
Interface MutationEvent
DOM2 relatedNode ? ? ?
prevValue ? ? ?
newValue ? ? ?
attrName ? ? ?
attrChange ? ? ?
initMutationEvent ? ? ?
Events for interface MutationEvent
DOM2 DOMSubtreeModified [21] ? ? ?
DOMNodeInserted ? ? ?
DOMNodeRemoved ? ? ?
DOMNodeRemovedFromDocument [22] ? ? ?
DOMNodeInsertedIntoDocument [23] ? ? ?
DOMAttrModified ? ? ?
DOMCharacterDataModified ? ? ?
Events for HTML
DOM2 load ? ? ?
unload ? ? ?
abort ? ? ?
error ? ? ?
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 — Returns a string, but should return a Date [24].
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.
Trident Tasman Gecko WebCore KHTML Presto iCab
Interface AbstractView
DOM2 document ? ? ? ?
Interface DocumentView
DOM2 defaultView ? ? ? ?

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 WebCore KHTML Presto iCab
Interface NodeIterator
DOM2 root ? ? ? ?
whatToShow ? ? ? ?
filter ? ? ? ?
expandEntityReferences ? ? ? ?
nextNode() ? ? ? ?
previousNode() ? ? ? ?
detach() ? ? ? ?
Interface NodeFilter
DOM2 acceptNode() ? ? ? ? ?
Interface TreeWalker
DOM2 root ? ? ? ?
whatToShow ? ? ? ?
filter ? ? ? ?
expandEntityReferences ? ? ? ?
currentNode ? ? ? ?
parentNode() ? ? ? ?
firstChild() ? ? ? ?
lastChild() ? ? ? ?
previousSibling() ? ? ? ?
nextSibling() ? ? ? ?
previousNode() ? ? ? ?
nextNode() ? ? ? ?
Interface DocumentTraversal
DOM2 createNodeIterator() ? ? ? ? ?
createTreeWalker() ? ? ? ? ?

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 WebCore KHTML Presto iCab
Interface Range
DOM2 startContainer rowspan="24" ? rowspan="24" rowspan="24" ? rowspan="24" ?
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() ? ? ?
Exception RangeException
DOM2 code ? ? ?

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 WebCore KHTML Presto iCab
Exception LSException
DOM3 code [25]
Interface DOMImplementationLS
DOM3 createLSParser()
createLSSerializer()
createLSInput()
createLSOutput()
Interface LSParser
DOM3 domConfig
filter
async
busy
parse()
parseURI()
parseWithContext()
abort()
Interface LSInput
DOM3 characterStream
byteStream
stringData
systemId
publicId
baseURI
encoding
certifiedText
Interface LSResourceResolver
DOM3 resolveResource()
Interface LSParserFilter
DOM3 whatToShow
startElement()
acceptNode()
Interface LSProgressEvent
DOM3 input
position
totalSize
Interface LSLoadEvent
DOM3 newDocument
input
Interface LSSerializer
DOM3 domConfig
newLine
filter
write()
writeToURI()
writeToString()
Interface LSOutput
DOM3 characterStream
byteStream
systemId
encoding
Interface LSSerializerFilter
DOM3 whatToShow

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 WebCore KHTML Presto iCab
Exception ExceptionVAL
DOM3 code
Interface DocumentEditVAL
DOM3 continuousValidityChecking
domConfig
getDefinedElements()
validateDocument()
Interface NodeEditVAL
DOM3 defaultValue
enumeratedValues
canInsertBefore()
canRemoveChild()
canReplaceChild()
canAppendChild()
nodeValidity()
Interface ElementEditVAL
DOM3 allowedChildren
allowedFirstChildren
allowedParents
allowedNextSiblings
allowedPreviousSiblings
allowedAttributes
requiredAttributes
contentType
canSetTextContent
canSetAttribute
canSetAttributeNode
canSetAttributeNS
canRemoveAttribute
canRemoveAttributeNS
canRemoveAttributeNode
isElementDefined
isElementDefinedNS
Interface CharacterDataEditVAL
DOM3 isWhitespaceOnly()
canSetData()
canAppendData()
canReplaceData()
canInsertData()
canDeleteData()

References



W3C

David Baron's Homepage

Jeremie's Personal Site

Mozilla Developer Documentation

Mozilla Developer Documentation

XULPlanet.com

Fabian Guisset

Opera Documentation

JavaScript Bible, 5th Edition

See also



Comparison of layout engines

Comparison of layout engines (HTML)

Comparison of layout engines (XML)

Comparison of layout engines (XHTML)

Comparison of layout engines (graphics)

Comparison of layout engines (CSS)

Comparison of layout engines (HTML5)

Comparison of layout engines (ECMAScript)

Comparison of layout engines (SVG)

External links



QuirksMode - DOM

Web browser DOM support

This article provided by Wikipedia. To edit the contents of this article, click here for original source.

psst.. try this: add to faves
Featured Companies
Vacation By VVacation By V