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.

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

KHTML

Presto

colspan="9" | Exception DOMException

DOM1

code

?

?

?

?

colspan="9" | Interface DOMStringList

DOM3

length

rowspan="3"

rowspan="3"

rowspan="3"

rowspan="3"

?

rowspan="3"

contains()

?

?

item()

?

?

colspan="9" | Interface NameList

DOM3

length

rowspan="5"

rowspan="5"

rowspan="5"

rowspan="5"

rowspan="5"

rowspan="5"

getName()

getNamespaceURI()

contains()

containsNS()

colspan="9" | Interface DOMImplementationList

DOM3

length

rowspan="2"

rowspan="2"

rowspan="2"

rowspan="2"

rowspan="2"

rowspan="2"

item()

colspan="9" | Interface DOMImplementationSource

DOM3

getDOMImplementation()

rowspan="2"

rowspan="2"

rowspan="2"

rowspan="2"

rowspan="2"

rowspan="2"

getDOMImplementationList()

colspan="9" | Interface DOMImplementation

DOM1

hasFeature()

?

?

DOM2

createDocumentType()

rowspan="2"

rowspan="2"

rowspan="2"

rowspan="2"

?

rowspan="2"

createDocument()

?

?

DOM3

getFeature()

?

colspan="9" | Interface DocumentFragment

DOM1

(no properties)

?

?

colspan="9" | 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()

?

?

colspan="9" | 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()

?

?

colspan="9" | Interface NodeList

DOM1

length

rowspan="2"

rowspan="2"

rowspan="2"

rowspan="2"

?

rowspan="2"

item()

?

?

colspan="9" | 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()

?

?

colspan="9" | Interface CharacterData

DOM1

data

rowspan="7"

rowspan="7"

rowspan="7"

rowspan="7"

?

rowspan="7"

length

?

?

substringData()

?

?

appendData()

?

?

insertData()

?

?

deleteData()

?

?

replaceData()

?

?

colspan="9" | 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

?

?

colspan="9" | 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()

?

?

colspan="9" | Interface Text

DOM1

splitText()

?

DOM3

isElementContentWhitespace

rowspan="3"

rowspan="3"

rowspan="3"

rowspan="3"

?

wholeText

?

?

replaceWholeText()

?

?

colspan="9" | Interface Comment

DOM1

(no properties)

?

colspan="9" | Interface TypeInfo

DOM3

typeName

rowspan="3"

rowspan="3"

rowspan="3"

rowspan="3"

rowspan="3"

rowspan="3"

typeNamespace

isDerivedFrom()

colspan="9" | Interface UserDataHandler

DOM3

handle()

colspan="9" | Interface DOMError

DOM3

severity

rowspan="6"

rowspan="6"

rowspan="6"

rowspan="6"

rowspan="6"

message

type

relatedException

relatedData

location

colspan="9" | Interface DOMErrorHandler

DOM3

handleError()

colspan="9" | Interface DOMLocator

DOM3

lineNumber

rowspan="6"

rowspan="6"

rowspan="6"

rowspan="6"

rowspan="6"

rowspan="6"

columnNumber

byteOffset

utf16Offset

relatedNode

uri

colspan="9" | Interface DOMConfiguration

DOM3

parameterNames

rowspan="4"

rowspan="4"

rowspan="4"

rowspan="4"

?

rowspan="4"

setParameter()

?

?

getParameter()

?

?

canSetParameter()

?

?

Trident Core (Fundamental) notes

  1. getElementById() — returns elements with name attribute set to value being found, not only id. Present in IE7. 1
  2. 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
  3. AttributeNode.specified — Does not set specified to true if ownerElement should be null 3.
  4. Node.isSameNode — isSameNode is only supported for XML documents, not HTML ones.

Gecko Core (Fundamental) notes

  1. insertBefore(), replaceChild(), removeChild(), appendChild() — Fails on Attr nodes 4. appendChild does not work as expected for DocumentFragment nodes prior to 1.8 5.
  2. createEntityReference() — Supported, but returns null when the method is checked 6.
  3. 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

  1. getElementById() — returns elements with name attribute set to value being found, not only id 8.
  2. 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.
  3. 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.
  4. 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

KHTML

Presto

colspan="9" | Interface CDATASection

DOM1

(no properties)

?

colspan="9" | Interface DocumentType

DOM1

name

?

entities

9

?

notations

10

?

DOM2

publicId

?

systemId

?

internalSubset

?

colspan="9" | Interface Notation

DOM1

publicId

?

systemId

?

colspan="9" | Interface Entity

DOM1

publicId

?

systemId

?

notationName

?

DOM3

inputEncoding

?

xmlEncoding

?

xmlVersion

?

colspan="9" | Interface EntityReference

DOM1

(no properties)

?

colspan="9" | 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

colspan="9" | Interface HTMLCollection

DOM1

length

rowspan="3"

?

?

?

item()

?

?

?

?

namedItem()

?

?

?

?

colspan="9" | Interface HTMLOptionsCollection

DOM2

length

?

?

?

?

item()

?

?

?

?

namedItem()

?

?

?

?

colspan="9" | Interface HTMLDocument

DOM1

title

?

?

referrer

?

?

domain

?

?

URL

?

?

body

?

?

images

?

?

applets

?

?

links

?

?

forms

?

?

anchors

?

?

cookie

?

?

open()

?

?

close()

?

?

write()

?

?

writeln()

?

?

getElementsByName()

?

?

?

colspan="9" | Interface HTMLElement

DOM1

id

?

?

title

?

?

lang

?

?

dir

?

?

className

?

?

colspan="9" | Interface HTMLHtmlElement

DOM1

version

?

?

?

colspan="9" | Interface HTMLHeadElement

DOM1

profile

?

?

?

colspan="9" | Interface HTMLLinkElement

DOM1

disabled

?

?

charset

?

?

href

?

?

hreflang

?

?

media

?

?

rel

?

?

rev

?

?

target

?

?

type

?

?

colspan="9" | Interface HTMLTitleElement

DOM1

text

?

?

colspan="9" | Interface HTMLMetaElement

DOM1

content

?

?

httpEquiv

?

?

name

?

?

scheme

?

?

?

colspan="9" | Interface HTMLBaseElement

DOM1

href

?

?

target

?

?

colspan="9" | Interface HTMLStyleElement

DOM2

disabled

?

?

?

?

media

?

?

type

?

?

colspan="9" | Interface HTMLBodyElement

DOM1

aLink

?

?

background

?

?

bgColor

?

?

link

?

?

text

?

?

vLink

?

?

colspan="9" | Interface HTMLFormElement

DOM1

elements

?

?

length

?

?

name

?

?

acceptEncoding

?

?

?

?

action

?

?

enctype

?

?

method

?

?

target

?

?

submit()

?

?

reset()

?

?

colspan="9" | Interface HTMLSelectElement

DOM1

type

?

?

selectedIndex

?

?

value

?

?

length

?

?

form

?

?

?

?

options

?

?

disabled

?

?

multiple

?

?

name

?

?

size

?

?

tabIndex

?

?

?

?

add()

?

?

?

?

remove()

?

?

?

?

blur()

?

?

focus()

?

?

colspan="9" | Interface HTMLOptGroupElement

DOM1

disabled

?

?

?

?

label

?

?

colspan="9" | Interface HTMLOptionElement

DOM1

form

?

?

defaultSelected

?

?

text

?

?

index

?

?

?

?

disabled

?

?

?

?

label

?

?

selected

?

?

value

?

?

colspan="9" | 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()

?

?

colspan="9" | Interface HTMLTextAreaElement

DOM1

defaultValue

?

?

form

?

?

accesskey

?

?

?

?

cols

?

?

disabled

?

?

name

?

?

readOnly

?

?

rows

?

?

tabIndex

?

?

?

?

type

?

?

value

?

?

blur()

?

?

focus()

?

?

select()

?

?

colspan="9" | Interface HTMLButtonElement

DOM1

form

?

?

accesskey

?

?

?

?

disabled

?

?

name

?

?

tabIndex

?

?

?

?

type

?

?

value

?

?

colspan="9" | Interface HTMLLabelElement

DOM1

form

?

?

accesskey

?

?

htmlFor

?

?

colspan="9" | Interface HTMLFieldSetElement

DOM1

form

?

?

colspan="9" | Interface HTMLLegendElement

DOM1

form

?

?

accesskey

?

?

?

?

align

?

?

colspan="9" | Interface HTMLUListElement

DOM1

compact

?

?

type

?

?

colspan="9" | Interface HTMLOListElement

DOM1

compact

?

?

start

?

?

type

?

?

colspan="9" | Interface HTMLDListElement

DOM1

compact

?

?

colspan="9" | Interface HTMLLIElement

DOM1

type

?

?

value

?

?

colspan="9" | Interface HTMLDivElement

DOM1

align

?

?

?

?

colspan="9" | Interface HTMLParagraphElement

DOM1

align

?

?

?

?

colspan="9" | Interface HTMLHeadingElement

DOM1

align

?

?

colspan="9" | Interface HTMLQuoteElement

DOM1

cite

?

?

colspan="9" | Interface HTMLPreElement

DOM1

width

?

?

?

?

colspan="9" | Interface HTMLBRElement

DOM1

clear

?

?

colspan="9" | Interface HTMLHRElement

DOM1

align

?

?

noShade

?

?

size

?

?

width

?

?

colspan="9" | Interface HTMLModElement

DOM1

cite

?

?

?

dateTime

?

?

?

?

colspan="9" | Interface HTMLAnchorElement

DOM1

accesskey

?

?

?

?

charset

?

?

coords

?

?

href

?

?

hreflang

?

?

name

?

?

rel

?

?

rev

?

?

shape

?

?

tabIndex

?

?

?

?

target

?

?

type

?

?

blur()

?

?

?

?

focus()

?

?

?

?

colspan="9" | Interface HTMLImageElement

DOM1

name

?

?

align

?

?

alt

?

?

border

?

?

height

?

?

hspace

?

?

isMap

?

?

longDesc

?

?

?

src

?

?

useMap

?

?

vspace

?

?

width

?

?

colspan="9" | Interface HTMLObjectElement

DOM1

form

?

?

?

?

code

?

?

align

?

?

archive

?

?

?

?

border

?

?

?

?

codeBase

?

?

codeType

?

?

data

?

?

declare

?

?

?

?

height

?

?

hspace

?

?

name

?

?

standby

?

?

?

?

tabIndex

?

?

?

?

type

?

?

useMap

?

?

?

?

vspace

?

?

width

?

?

DOM2

contentDocument

?

?

colspan="9" | Interface HTMLParamElement

DOM1

name

?

?

?

?

type

?

?

?

?

value

?

?

?

?

valueType

?

?

?

colspan="9" | Interface HTMLMapElement

DOM1

areas

?

?

name

?

?

colspan="9" | Interface HTMLAreaElement

DOM1

accesskey

?

?

?

?

alt

?

?

coords

?

?

hrefs

?

?

?

?

noHrefs

?

?

?

?

shape

?

?

tabIndex

?

?

?

?

target

?

?

colspan="9" | Interface HTMLScriptElement

DOM1

text

0

?

?

htmlFor (reserved for future use)

?

?

event (reserved for future use)

?

?

charset

?

?

?

?

defer

?

?

src

?

?

type

?

?

target

?

?

?

?

colspan="9" | 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()

?

?

colspan="9" | Interface HTMLTableCaptionElement

DOM1

align

?

?

colspan="9" | Interface HTMLTableColElement

DOM1

align

?

?

ch

?

?

chOff

?

?

span

?

?

vAlign

?

?

width

?

?

colspan="9" | Interface HTMLTableSectionElement

DOM1

align

?

?

ch

?

?

chOff

?

?

vAlign

?

?

rows

?

?

insertRow()

?

?

deleteRow()

?

?

colspan="9" | Interface HTMLTableRowElement

DOM1

rowIndex

?

?

sectionRowIndex

?

?

cells

?

?

align

?

?

bgColor

?

?

ch

?

?

chOff

?

?

vAlign

?

?

insertCell()

?

?

deleteCell()

?

?

colspan="9" | Interface HTMLTableCellElement

DOM1

cellIndex

?

abbr

?

?

align

?

?

axis

?

?

bgColor

?

?

ch

?

?

chOff

?

?

colSpan

?

?

headers

?

?

height

?

?

noWrap

?

?

rowSpan

?

?

scope

?

?

?

?

vAlign

?

?

width

?

?

colspan="9" | Interface HTMLFrameSetElement

DOM1

cols

?

?

rows

?

?

colspan="9" | Interface HTMLFrameElement

DOM1

frameBorder

?

?

longDesc

?

?

marginHeight

?

?

marginWidth

?

?

name

?

?

noResize

4.0

?

?

scrolling

?

?

src

?

?

DOM2

contentDocument

?

?

colspan="9" | Interface HTMLIFrameSetElement

DOM1

align

?

?

frameBorder

?

?

?

?

height

?

?

longDesc

?

?

marginHeight

?

?

marginWidth

?

?

name

?

?

scrolling

?

?

src

?

?

width

?

?

DOM2

contentDocument

?

?

Trident HTML notes

  1. profile, href, background, action, cite, longDesc, codebase, data, src — Relative URL was not resolved to full URL.

WebCore HTML notes

  1. cellIndex — Always return zero 11.

Presto HTML notes

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

colspan="9" | Interface StyleSheet

DOM2

type

?

rowspan="7"

?

disabled

?

?

?

ownerNode

?

?

?

parentStyleSheet

?

?

?

href

?

?

?

title

?

?

?

media

?

?

?

colspan="9" | Interface StyleSheetList

DOM2

length

?

rowspan="2"

?

item()

?

?

?

colspan="9" | Interface MediaList

DOM2

mediaText

?

rowspan="5"

?

length

?

?

?

item()

?

?

?

deleteMedium()

?

?

?

appendMedium()

?

?

?

colspan="9" | Interface LinkStyle

DOM2

sheet

?

?

colspan="9" | Interface DocumentStyle

DOM2

styleSheets

?

?

Trident Style (Style Sheets) notes

  1. href — Relative URL is not resolved to full URL.
  2. 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

colspan="9" | Interface CSSStyleSheet

DOM2

ownerRule

?

?

?

cssRules

?

insertRule()

?

deleteRule()

?

colspan="9" | Interface StyleSheetList

DOM2

length

?

?

?

item()

?

?

?

colspan="9" | Interface CSSRuleList

DOM2

length

?

?

?

item()

?

?

?

colspan="9" | Interface CSSRule

DOM2

type

?

?

?

cssText

?

?

parentStyleSheet

?

parentRule

?

?

?

colspan="9" | Interface CSSStyleRule

DOM2

selectorText

?

style

?

?

?

colspan="9" | Interface CSSMediaRule

DOM2

media

?

?

?

cssRules

?

?

?

insertRule()

?

?

?

deleteRule()

?

?

?

colspan="9" | Interface CSSFontFaceRule

DOM2

style

?

12

?

?

colspan="9" | Interface CSSPageRule

DOM2

selectorText

?

13

?

?

style

?

?

?

colspan="9" | Interface CSSImportRule

DOM2

href

?

media

?

?

?

styleSheet

?

?

?

colspan="9" | Interface CSSCharsetRule

DOM2

encoding

?

?

?

colspan="9" | Interface CSSUnknownRule

DOM2

(no properties)

?

14

?

?

colspan="9" | Interface CSSStyleDeclaration

DOM2

cssText

?

?

?

length

?

?

?

parentRule

?

?

?

getPropertyValue()

?

getPropertyCSSValue()

?

15

?

?

removeProperty()

?

getPropertyPriority()

?

?

setProperty()

?

item()

?

?

?

colspan="9" | Interface CSSValue

DOM2

cssText

?

16

?

?

cssValueType

?

?

?

colspan="9" | Interface CSSPrimitiveValue

DOM2

primitiveType

?

17

?

?

setFloatValue()

?

?

?

getFloatValue()

?

?

?

setStringValue()

?

?

?

getStringValue()

?

?

?

getCounterValue()

?

?

?

getRectValue()

?

?

?

getRGBColorValue()

?

?

?

colspan="9" | Interface CSSValueList

DOM2

length

?

?

?

item()

?

?

?

colspan="9" | Interface RGBColor

DOM2

red

?

?

?

green

?

?

?

blue

?

?

?

colspan="9" | Interface Rect

DOM2

top

?

?

?

right

?

?

?

bottom

?

?

?

left

?

?

?

colspan="9" | Interface Counter

DOM2

identifier

?

?

?

listStyle

?

?

?

separator

?

?

?

colspan="9" | Interface ViewCSS

DOM2

getComputedStyle()

?

colspan="9" | Interface DocumentCSS

DOM2

getOverrideStyle()

?

18

?

?

colspan="9" | Interface DOMImplementationCSS

DOM2

createCSSStyleSheet()

?

19

?

?

colspan="9" | Interface ElementCSSInlineStyle

DOM2

style

Tasman Style (CSS Fundamental) notes

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

Style (CSS Extended)

The interfaces found within this section are not mandatory.

Trident

Tasman

Gecko

WebCore

KHTML

Presto

colspan="9" | 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

colspan="9" | Interface EventTarget

DOM2

addEventListener()

?

removeEventListener()

?

?

dispatchEvent()

?

?

colspan="9" | Interface EventListener

DOM2

handleEvent()

?

?

?

?

?

?

colspan="9" | Interface Event

DOM2

type

?

?

target

?

currentTarget

?

?

eventPhase

?

?

bubbles

?

?

cancelable

?

?

timeStamp

?

?

stopPropagation()

?

?

preventDefault()

?

?

initEvent()

?

?

colspan="9" | Exception EventException

DOM2

code

?

?

colspan="9" | Interface DocumentEvent

DOM2

createEvent()

?

?

colspan="9" | Interface UIEvent

DOM2

view

20

?

?

detail

?

?

initUIEvent()

?

?

colspan="9" | Events for interface UIEvent

DOM2

DOMFocusIn

?

?

DOMFocusOut

?

?

DOMActivate

?

?

colspan="9" | Interface MouseEvent

DOM2

screenX

?

screenY

?

clientX

?

clientY

?

ctrlKey

?

shiftKey

?

altKey

?

metaKey

?

button

?

relatedTarget

?

initMouseEvent()

?

?

?

?

colspan="9" | Events for interface MouseEvent

DOM2

click

?

?

mousedown

?

?

mouseup

?

?

mouseover

?

?

mousemove

?

?

mouseout

?

?

colspan="9" | Interface MutationEvent

DOM2

relatedNode

?

?

prevValue

?

?

newValue

?

?

attrName

?

?

attrChange

?

?

initMutationEvent

?

?

colspan="9" | Events for interface MutationEvent

DOM2

DOMSubtreeModified

21

?

?

DOMNodeInserted

?

?

DOMNodeRemoved

?

?

DOMNodeRemovedFromDocument

22

?

?

DOMNodeInsertedIntoDocument

23

?

?

DOMAttrModified

?

?

DOMCharacterDataModified

?

?

colspan="9" | Events for HTML

DOM2

load

?

?

unload

?

?

abort

?

?

error

?

?

select

?

?

change

?

?

submit

?

?

reset

?

?

focus

?

?

blur

?

?

resize

?

?

scroll

?

?

Trident Events notes

  1. button — Does not use W3C values.

Tasman Events notes

  1. button — Does not use W3C values.

Gecko Events notes

  1. target — Return text node, if any, of the target element node prior to 1.3.
  2. timeStamp — Returns a string, but should return a Date 24.

WebCore Events notes

  1. target — Return text node, if any, of the target element node (fixed in v73, but reverted in v85).
  2. clientX, clientY — Treated as pageX and pageY.
  3. button — Does not use W3C values.

Presto Events notes

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

colspan="9" | Interface AbstractView

DOM2

document

?

?

?

colspan="9" | Interface DocumentView

DOM2

defaultView

?

?

?

Trident notes

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

colspan="9" | Interface NodeIterator

DOM2

root

?

?

?

whatToShow

?

?

?

filter

?

?

?

expandEntityReferences

?

?

?

nextNode()

?

?

?

previousNode()

?

?

?

detach()

?

?

?

colspan="9" | Interface NodeFilter

DOM2

acceptNode()

?

?

?

colspan="9" | Interface TreeWalker

DOM2

root

?

?

?

whatToShow

?

?

?

filter

?

?

?

expandEntityReferences

?

?

?

currentNode

?

?

?

parentNode()

?

?

?

firstChild()

?

?

?

lastChild()

?

?

?

previousSibling()

?

?

?

nextSibling()

?

?

?

previousNode()

?

?

?

nextNode()

?

?

?

colspan="9" | 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

colspan="9" | 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()

?

?

?

colspan="9" | Interface DocumentRange

DOM2

createRange()

?

?

colspan="9" | 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

colspan="9" | Exception LSException

DOM3

code

25

colspan="9" | Interface DOMImplementationLS

DOM3

createLSParser()

createLSSerializer()

createLSInput()

createLSOutput()

colspan="9" | Interface LSParser

DOM3

domConfig

filter

async

busy

parse()

parseURI()

parseWithContext()

abort()

colspan="9" | Interface LSInput

DOM3

characterStream

byteStream

stringData

systemId

publicId

baseURI

encoding

certifiedText

colspan="9" | Interface LSResourceResolver

DOM3

resolveResource()

colspan="9" | Interface LSParserFilter

DOM3

whatToShow

startElement()

acceptNode()

colspan="9" | Interface LSProgressEvent

DOM3

input

position

totalSize

colspan="9" | Interface LSLoadEvent

DOM3

newDocument

input

colspan="9" | Interface LSSerializer

DOM3

domConfig

newLine

filter

write()

writeToURI()

writeToString()

colspan="9" | Interface LSOutput

DOM3

characterStream

byteStream

systemId

encoding

colspan="9" | 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

colspan="9" | Exception ExceptionVAL

DOM3

code

colspan="9" | Interface DocumentEditVAL

DOM3

continuousValidityChecking

domConfig

getDefinedElements()

validateDocument()

colspan="9" | Interface NodeEditVAL

DOM3

defaultValue

enumeratedValues

canInsertBefore()

canRemoveChild()

canReplaceChild()

canAppendChild()

nodeValidity()

colspan="9" | Interface ElementEditVAL

DOM3

allowedChildren

allowedFirstChildren

allowedParents

allowedNextSiblings

allowedPreviousSiblings

allowedAttributes

requiredAttributes

contentType

canSetTextContent

canSetAttribute

canSetAttributeNode

canSetAttributeNS

canRemoveAttribute

canRemoveAttributeNS

canRemoveAttributeNode

isElementDefined

isElementDefinedNS

colspan="9" | Interface CharacterDataEditVAL

DOM3

isWhitespaceOnly()

canSetData()

canAppendData()

canReplaceData()

canInsertData()

canDeleteData()