Référence du DOM
================

Le ***Document Object Model*** ou **DOM** (pour modèle objet de document) est une interface de programmation pour les documents HTML, XML et SVG. Il fournit une représentation structurée du document sous forme d'un arbre et définit la façon dont la structure peut être manipulée par les programmes, en termes de style et de contenu. Le DOM représente le document comme un ensemble de nœuds et d'objets possédant des propriétés et des méthodes. Les nœuds peuvent également avoir des gestionnaires d'événements qui se déclenchent lorsqu'un événement se produit. Cela permet de manipuler des pages web grâce à des scripts et/ou des langages de programmation. Les nœuds peuvent être associés à des gestionnaires d'événements. Une fois qu'un événement est déclenché, les gestionnaires d'événements sont exécutés.

Pour mieux comprendre le fonctionnement du DOM, une introduction est disponible.

Interfaces du DOM
-----------------

* `Attr`
* `CharacterData`
* `ChildNode` 
Expérimental
* `Comment`
* `CustomEvent`
* `Document`
* `DocumentFragment`
* `DocumentType`
* `DOMError` 
Obsolète
* `DOMException`
* `DOMImplementation`
* `DOMString`
* `DOMTimeStamp`
* `DOMSettableTokenList`
* `DOMStringList`
* `DOMTokenList`
* `Element`
* `EventTarget`
* `HTMLCollection`
* `MutationObserver`
* `Event`
* `MutationRecord` (en-US)
* `NamedNodeMap`
* `Node`
* `NodeFilter`
* `NodeIterator`
* `NodeList`
* `NonDocumentTypeChildNode` (en-US)
* `ParentNode`
* `ProcessingInstruction`
* `Selection`
Expérimental
* `Range`
* `Text`
* `TextDecoder` (en-US) 
Expérimental
* `TextEncoder` 
Expérimental
* `TimeRanges`
* `TreeWalker`
* `URL`
* `Window`
* `Worker`
* `XMLDocument` 
Expérimental
Interfaces obsolètes du DOM
---------------------------

Le DOM a été simplifié au cours du temps. Pour cette raison, les interfaces qui suivent, présentes dans la spécification du DOM de niveau 3 ou des niveaux antérieurs, ont été supprimées. Bien qu'il ne soit pas certain qu'elles ne soient pas réintroduites, elles doivent être considérées comme obsolètes et il faut éviter de les utiliser :

* `CDATASection`
* `DocumentTouch`
* `DOMConfiguration`
* `DOMErrorHandler`
* `DOMImplementationList`
* `DOMImplementationRegistry`
* `DOMImplementationSource`
* `DOMLocator`
* `DOMObject`
* `DOMUserData`
* `ElementTraversal`
* `Entity`
* `EntityReference`
* `NamedNodeMap`
* `NameList`
* `Notation`
* `TypeInfo`
* `UserDataHandler`
Interfaces HTML
---------------

Un document contenant du HTML est décrit grâce à l'interface `HTMLDocument`. On notera que la spécification HTML étend également l'interface `Document`.

Un objet `HTMLDocument` donne également accès à différentes fonctionnalités liées au navigateur comme l'onglet ou la fenêtre dans laquelle la page est dessinée, notamment grâce à l'interface `Window`. On peut accéder à la mise en forme de la page via `window.style` (généralement le CSS associé au document), à l'historique de navigation relatif au contexte via `window.history` et enfin à la sélection faite dans le document via `Selection`.

### Interfaces des éléments HTML

* `HTMLAnchorElement` (en-US)
* `HTMLAppletElement`
* `HTMLAreaElement` (en-US)
* `HTMLAudioElement` (en-US)
* `HTMLBaseElement`
* `HTMLBodyElement`
* `HTMLBRElement`
* `HTMLButtonElement`
* `HTMLCanvasElement`
* `HTMLDataElement` (en-US)
* `HTMLDataListElement` (en-US)
* `HTMLDialogElement` (en-US)
* `HTMLDirectoryElement`
* `HTMLDivElement`
* `HTMLDListElement` (en-US)
* `HTMLElement`
* `HTMLEmbedElement` (en-US)
* `HTMLFieldSetElement` (en-US)
* `HTMLFontElement` (en-US)
* `HTMLFormElement`
* `HTMLFrameElement`
* `HTMLFrameSetElement`
* `HTMLHeadElement` (en-US)
* `HTMLHeadingElement`
* `HTMLHtmlElement` (en-US)
* `HTMLHRElement` (en-US)
* `HTMLIFrameElement`
* `HTMLImageElement`
* `HTMLInputElement`
* `HTMLLabelElement` (en-US)
* `HTMLLegendElement` (en-US)
* `HTMLLIElement` (en-US)
* `HTMLLinkElement` (en-US)
* `HTMLMapElement` (en-US)
* `HTMLMediaElement`
* `HTMLMenuElement` (en-US)
* `HTMLMetaElement` (en-US)
* `HTMLMeterElement` (en-US)
* `HTMLModElement` (en-US)
* `HTMLObjectElement` (en-US)
* `HTMLOListElement` (en-US)
* `HTMLOptGroupElement` (en-US)
* `HTMLOptionElement`
* `HTMLOutputElement` (en-US)
* `HTMLParagraphElement` (en-US)
* `HTMLParamElement` (en-US)
* `HTMLPreElement` (en-US)
* `HTMLProgressElement` (en-US)
* `HTMLQuoteElement`
* `HTMLScriptElement` (en-US)
* `HTMLSelectElement`
* `HTMLSourceElement` (en-US)
* `HTMLSpanElement`
* `HTMLStyleElement`
* `HTMLTableElement`
* `HTMLTableCaptionElement` (en-US)
* `HTMLTableCellElement`
* `HTMLTableDataCellElement` (en-US)
* `HTMLTableHeaderCellElement` (en-US)
* `HTMLTableColElement` (en-US)
* `HTMLTableRowElement`
* `HTMLTableSectionElement` (en-US)
* `HTMLTextAreaElement` (en-US)
* `HTMLTimeElement`
* `HTMLTitleElement` (en-US)
* `HTMLTrackElement` (en-US)
* `HTMLUListElement` (en-US)
* `HTMLUnknownElement`
* `HTMLVideoElement`
### Autres interfaces

* `CanvasRenderingContext2D`
* `CanvasGradient`
* `CanvasPattern` (en-US)
* `TextMetrics`
* `ImageData`
* `CanvasPixelArray` (en-US)
* `NotifyAudioAvailableEvent`
* `HTMLAllCollection` (en-US)
* `HTMLFormControlsCollection`
* `HTMLOptionsCollection` (en-US)
* `HTMLPropertiesCollection`
* `DOMStringMap` (en-US)
* `RadioNodeList` (en-US)
* `MediaError` (en-US)
### Interfaces HTML obsolètes

* `HTMLIsIndexElement`
Interfaces SVG
--------------

### Interfaces des éléments SVG

* `SVGAElement`
* `SVGAltGlyphElement` 
Obsolète
* `SVGAltGlyphDefElement` 
Obsolète
* `SVGAltGlyphItemElement` 
Obsolète
* `SVGAnimationElement` (en-US)
* `SVGAnimateElement` (en-US)
* `SVGAnimateColorElement` (en-US) 
Obsolète
* `SVGAnimateMotionElement` (en-US)
* `SVGAnimateTransformElement` (en-US)
* `SVGCircleElement` (en-US)
* `SVGClipPathElement` (en-US)
* `SVGColorProfileElement` 
Obsolète
* `SVGComponentTransferFunctionElement` (en-US)
* `SVGCursorElement` (en-US)
* `SVGDefsElement` (en-US)
* `SVGDescElement`
* `SVGElement`
* `SVGEllipseElement` (en-US)
* `SVGFEBlendElement` (en-US)
* `SVGFEColorMatrixElement` (en-US)
* `SVGFEComponentTransferElement` (en-US)
* `SVGFECompositeElement` (en-US)
* `SVGFEConvolveMatrixElement` (en-US)
* `SVGFEDiffuseLightingElement` (en-US)
* `SVGFEDisplacementMapElement` (en-US)
* `SVGFEDistantLightElement` (en-US)
* `SVGFEDropShadowElement` (en-US)
* `SVGFEFloodElement` (en-US)
* `SVGFEFuncAElement` (en-US)
* `SVGFEFuncBElement` (en-US)
* `SVGFEFuncGElement` (en-US)
* `SVGFEFuncRElement` (en-US)
* `SVGFEGaussianBlurElement` (en-US)
* `SVGFEImageElement` (en-US)
* `SVGFEMergeElement` (en-US)
* `SVGFEMergeNodeElement` (en-US)
* `SVGFEMorphologyElement` (en-US)
* `SVGFEOffsetElement` (en-US)
* `SVGFEPointLightElement` (en-US)
* `SVGFESpecularLightingElement` (en-US)
* `SVGFESpotLightElement` (en-US)
* `SVGFETileElement` (en-US)
* `SVGFETurbulenceElement` (en-US)
* `SVGFilterElement` (en-US)
* `SVGFilterPrimitiveStandardAttributes`
* `SVGFontElement` (en-US) 
Obsolète
* `SVGFontFaceElement` (en-US) 
Obsolète
* `SVGFontFaceFormatElement` (en-US) 
Obsolète
* `SVGFontFaceNameElement` (en-US) 
Obsolète
* `SVGFontFaceSrcElement` (en-US) 
Obsolète
* `SVGFontFaceUriElement` (en-US) 
Obsolète
* `SVGForeignObjectElement` (en-US)
* `SVGGElement` (en-US)
* `SVGGeometryElement` (en-US)
* `SVGGlyphElement` (en-US) 
Obsolète
* `SVGGlyphRefElement` (en-US) 
Obsolète
* `SVGGradientElement` (en-US)
* `SVGGraphicsElement` (en-US)
* `SVGHatchElement` 
Expérimental
* `SVGHatchpathElement` 
Expérimental
* `SVGHKernElement` (en-US) 
Obsolète
* `SVGImageElement` (en-US)
* `SVGLinearGradientElement` (en-US)
* `SVGLineElement` (en-US)
* `SVGMarkerElement` (en-US) 
Expérimental
* `SVGMaskElement` (en-US)
* `SVGMeshElement` 
Expérimental
* `SVGMeshGradientElement` 
Expérimental
* `SVGMeshpatchElement` 
Expérimental
* `SVGMeshrowElement` 
Expérimental
* `SVGMetadataElement` (en-US)
* `SVGMissingGlyphElement` (en-US) 
Obsolète
* `SVGMPathElement` (en-US)
* `SVGPathElement` (en-US)
* `SVGPatternElement` (en-US)
* `SVGPolylineElement` (en-US)
* `SVGPolygonElement` (en-US)
* `SVGRadialGradientElement` (en-US)
* `SVGRectElement`
* `SVGScriptElement` (en-US)
* `SVGSetElement` (en-US)
* `SVGSolidcolorElement` 
Expérimental
* `SVGStopElement` (en-US)
* `SVGStyleElement` (en-US)
* `SVGSVGElement` (en-US)
* `SVGSwitchElement` (en-US)
* `SVGSymbolElement` (en-US)
* `SVGTextContentElement` (en-US)
* `SVGTextElement` (en-US)
* `SVGTextPathElement` (en-US)
* `SVGTextPositioningElement` (en-US)
* `SVGTitleElement`
* `SVGTRefElement` (en-US) 
Obsolète
* `SVGTSpanElement` (en-US)
* `SVGUseElement` (en-US)
* `SVGUnknownElement` 
Expérimental
* `SVGViewElement` (en-US)
* `SVGVKernElement` (en-US) 
Obsolète
### Interfaces pour les types de donnée SVG

Voici l'API du DOM pour les types de donnée utilisés pour les propriétés et attributs SVG.

**Note :** À partir de Gecko 5.0, les interfaces suivantes relatives à SVG et qui représentent des listes d'objets sont indexées et permettent d'y accéder. Elles possèdent en plus une propriété de longueur qui indique le nombre d'éléments dans la liste : `SVGLengthList` (en-US), `SVGNumberList` (en-US), `SVGPathSegList` et `SVGPointList` (en-US).

#### Interfaces statiques

* `SVGAngle` (en-US)
* `SVGColor` 
Obsolète
* `SVGICCColor` 
Obsolète
* `SVGElementInstance`
* `SVGElementInstanceList`
* `SVGLength` (en-US)
* `SVGLengthList` (en-US)
* `SVGMatrix` 
Obsolète
* `SVGNameList`
* `SVGNumber` (en-US)
* `SVGNumberList` (en-US)
* `SVGPaint`
* `SVGPathSeg` 
Obsolète
* `SVGPathSegClosePath` 
Obsolète
* `SVGPathSegMovetoAbs` 
Obsolète
* `SVGPathSegMovetoRel` 
Obsolète
* `SVGPathSegLinetoAbs` 
Obsolète
* `SVGPathSegLinetoRel` 
Obsolète
* `SVGPathSegCurvetoCubicAbs` 
Obsolète
* `SVGPathSegCurvetoCubicRel` 
Obsolète
* `SVGPathSegCurvetoQuadraticAbs` 
Obsolète
* `SVGPathSegCurvetoQuadraticRel` 
Obsolète
* `SVGPathSegArcAbs` 
Obsolète
* `SVGPathSegArcRel` 
Obsolète
* `SVGPathSegLinetoHorizontalAbs` 
Obsolète
* `SVGPathSegLinetoHorizontalRel` 
Obsolète
* `SVGPathSegLinetoVerticalAbs` 
Obsolète
* `SVGPathSegLinetoVerticalRel` 
Obsolète
* `SVGPathSegCurvetoCubicSmoothAbs` 
Obsolète
* `SVGPathSegCurvetoCubicSmoothRel` 
Obsolète
* `SVGPathSegCurvetoQuadraticSmoothAbs` 
Obsolète
* `SVGPathSegCurvetoQuadraticSmoothRel` 
Obsolète
* `SVGPathSegList` 
Obsolète
* `SVGPoint` (en-US) 
Obsolète
* `SVGPointList` (en-US) 
Obsolète
* `SVGPreserveAspectRatio` (en-US)
* `SVGRect` 
Obsolète
* `SVGStringList` (en-US)
* `SVGTransform` (en-US)
* `SVGTransformList` (en-US)

#### Interfaces animées

* `SVGAnimatedAngle` (en-US)
* `SVGAnimatedBoolean` (en-US)
* `SVGAnimatedEnumeration` (en-US)
* `SVGAnimatedInteger` (en-US)
* `SVGAnimatedLength` (en-US)
* `SVGAnimatedLengthList` (en-US)
* `SVGAnimatedNumber` (en-US)
* `SVGAnimatedNumberList` (en-US)
* `SVGAnimatedPathData` 
Obsolète
* `SVGAnimatedPoints` (en-US)
* `SVGAnimatedPreserveAspectRatio` (en-US)
* `SVGAnimatedRect` (en-US)
* `SVGAnimatedString` (en-US)
* `SVGAnimatedTransformList` (en-US)
### Interfaces relatives à SMIL

* `ElementTimeControl`
* `TimeEvent` (en-US)
### Autres interfaces SVG

* `GetSVGDocument`
* `ShadowAnimation`
* `SVGColorProfileRule` 
Obsolète
* `SVGCSSRule` 
Obsolète
* `SVGDocument`
* `SVGException` 
Obsolète
* `SVGExternalResourcesRequired` 
Obsolète
* `SVGFitToViewBox`
* `SVGLangSpace` 
Obsolète
* `SVGLocatable` 
Obsolète
* `SVGRenderingIntent` (en-US) 
Obsolète
* `SVGStylable` 
Obsolète
* `SVGTests`
* `SVGTransformable` 
Obsolète
* `SVGUnitTypes` (en-US)
* `SVGUseElementShadowRoot`
* `SVGURIReference` (en-US)
* `SVGViewSpec` 
Obsolète
* `SVGZoomAndPan`
* `SVGZoomEvent` 
Obsolète
Voir aussi
----------

* Exemples appliqués pour le DOM