The following tables compare DOM compatibility and support for a number of layout engines . Please see the individual products' articles for further information. 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.
Explanation of the tables
Engine nomenclature
Rather than the names of web browsers and HTML to PDF converters, the names of the underlying engines are used. Some of the software and online converters that use the various engines are listed below.
Layout engine
Release version
Preview version
Used by
Amaya
11.4.7[1]
N/A
No longer developed; Amaya
Blink
537.36
source code[note 1]
Chromium /Chrome (28+), Opera (15+), Yandex , Liebao and Samsung Browser[citation needed ] .
EdgeHTML
13.10586 [2]
N/A
Microsoft Edge , Universal Windows Platform (UWP) JavaScript apps
Gecko
Standard
47.0 (June 7, 2016; 2 days ago (2016-06-07 ) [3] )
ESR
45.2.0 (June 7, 2016; 2 days ago (2016-06-07 ) [4] )
Beta
48.0 Beta 1 (June 8, 2016; 1 day ago (2016-06-08 ) [5] [6] )
Developer Edition
48.0a2 (April 28, 2016; 42 days ago (2016-04-28 ) [7] ) daily release
Nightly
50.0a1 (June 6, 2016; 3 days ago (2016-06-06 ) [8] ) daily release
All Mozilla software, including Firefox ; SeaMonkey and Galeon ; Camino ; K-Meleon ; Flock (up to 2.x); Debian IceWeasel ; GNU IceCat (formerly GNU IceWeasel); Cyberfox ; Icedove , Iceape and Iceowl ; Firefox for mobile ("Fennec"). Also used by the Maple platform in 2010 and 2011 Samsung "SmartTV" devices which are based on the build used in Firefox 2.5. The Nokia Asha platform also uses Gecko for web apps rendering.
KHTML
4.12.3[9]
N/A
Konqueror [note 2]
Martha
?
?
PDFreactor, Nimbudocs Editor and edit-on NG
Presto
2.12.388
N/A
No longer developed; Opera and Opera Mobile use Blink now; Nintendo DS & DSi Browser ; Internet Channel
Prince
10
20160109
HTML to PDF converters: Prince (previously called PrinceXML) , DocRaptor . The information in the Prince columns is also true of Prince for Books, a related layout engine.
Tasman
(IE 5.2.3 for Mac)
N/A
No longer developed (aborted in 2003); Internet Explorer 5+ for Mac OS X
Trident
7.0 (IE 11)
N/A
Internet Explorer and other Internet Explorer shells like Maxthon (Microsoft Windows operating systems only), Windows Phone 8
WebKit
534.20
nightly build [note 3]
Tizen (both OS and browser), Safari (both desktop and mobile), Google Chrome (before 28), Maxthon 3 , Shiira , iCab 4 , OmniWeb 5.5 +, Web , Adobe AIR , Midori , Adobe Dreamweaver CS4 and CS5 , Android browser, Palm webOS browser, Symbian S60 browser, OWB , Steam , Rekonq , Arora , Flock (version 3+), RockMelt , Dolphin Browser , Sleipnir , Konqueror [note 2] . Used by the LG Smart TV platform to enable web content on TVs. HTML to PDF converters: wkhtmltopdf , PhantomJS , Pdfcrowd [10] , http://www.online-convert.com/ [11] </ref>.
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
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
5.0[t 1]
?
1.0
?
?
1.0
Interface DOMStringList
DOM3
length
6.0[t 2]
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 3]
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 3]
?
createProcessingInstruction()
?
1.7
?
createEntityReference()
No
?
No [1]
?
No
DOM2
importNode()
9.0[t 3]
No
1.0
Yes
?
1.0
createElementNS()
?
createAttributeNS()
?
getElementsByTagNameNS()
?
getElementById()
8.0
Yes
?
2.1
DOM3
adoptNode()
9.0[t 3]
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 3]
?
hasAttributes()
?
DOM3
isSameNode()
9.0
No
1.8
Yes
?
2.1
compareDocumentPosition()
9.0[t 3]
1.7
4.2.4
baseURI
No
?
Yes
textContent
9.0[t 3]
?
2.0
lookupPrefix()
?
isDefaultNamespace()
?
lookupNamespaceURI()
?
getFeature()
No
?
setUserData()
?
No
getUserData()
?
isEqualNode()
9.0[t 3]
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 3]
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 3]
?
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 3]
removeAttributeNode()
normalize()
No
?
DOM2
getAttributeNS()
9.0[t 3]
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 3]
Yes
1.0
Yes
?
1.0
DOM3
isElementContentWhitespace
No
No
1.9.1
No
?
Yes
wholeText
9.0[t 3]
?
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 4]
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
to true
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
to true
if ownerElement is null.
Gecko Core (Fundamental) notes
insertBefore(), replaceChild(), removeChild(), appendChild() — Fails on Attr
nodes.[g 1] appendChild
does not work as expected for DocumentFragment
nodes prior to 1.8.
AttributeNode.specified — Prior to 1.9.1 does not set specified
to true
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()
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.
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 5]
WebKit HTML notes
cellIndex — Always return zero.[citation needed ]
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 5]
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 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
Tasman
Gecko
WebKit
KHTML
Presto
Interface EventTarget
DOM2
addEventListener()
5.0[t 6]
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 7]
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 1 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
and pageY
.
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 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
Gecko references
^ Bug 56758 - Attr appendChild, insertBefore, removeChild, replaceChild fail , Mozilla
^ Bug 15118 - expat doesn't send notifications for doctype.notations and doctype.entities , Mozilla
^ Bug 70132 - Support @font-face , Mozilla
^ Bug 35615 - Implement CSSPageRule , Mozilla
^ Bug 35618 - (DOM2 CSS) CSSUnknownRule , Mozilla
^ a b Bug 62682 - CSSStyleDeclaration.getPropertyCSSValue() not implemented, always returns nsnull , Mozilla
^ Bug 132475 - nsROCSSPrimitiveValue::SetFoo() methods should return an nsresult , Mozilla
^ Bug 45424 - implement getOverrideStyle() , Mozilla
^ Bug 63850 - document.implementation.createCSSStyleSheet() Not Implemented , Mozilla
^ a b Bug 60212 - RFE: DOM 2 UIEvent interface , Mozilla
^ Bug 74219 - Implement NodeInsertedIntoDocument, NodeRemovedFromDocument , Mozilla
^ Bug 77992 - Event.timeStamp should be relative to 1st January 1970 rather than the system start , Mozilla
^ Bug 155749 - Implement DOM3 Load/Save , Mozilla
Webkit references
Presto references
Other references
"W3C" , Document Object Model (DOM) Conformance Test Suites , retrieved May 1, 2005
"David Baron's Homepage" , DOM Test Pages , retrieved May 1, 2005
"Jeremie's Personal Site" , DOM Level 1 Tests , retrieved May 1, 2005
"Mozilla Developer Documentation" , DOM Support in Mozilla , retrieved May 1, 2005
"Mozilla Developer Documentation" , What does each DOM Level bring? , retrieved May 1, 2005
"XULPlanet.com" , Mozilla Object Reference , retrieved May 1, 2005
"Fabian Guisset" , Mozilla DOM Status Update , retrieved May 1, 2005
"Opera Documentation" , Web Specifications Supported in Opera , retrieved May 1, 2005
"JavaScript Bible, 5th Edition" , Appendix A: JS/DOM Object Quick Reference , retrieved May 5, 2005
External links