Modelo de Objeto de Documento (DOM)
===================================

O **Modelo de Objeto de Documento (*DOM*)** é uma interface de programação para documentos HTML, XML e SVG . Ele fornece uma representação estruturada do documento como uma árvore. O DOM define métodos que permitem acesso à árvore, para que eles possam alterar a estrutura, estilo e conteúdo do documento. O DOM fornece uma representação do documento como um grupo estruturado de nós e objetos, possuindo várias propriedades e métodos. Os nós também podem ter manipuladores de eventos que lhe são inerentes, e uma vez que um evento é acionado, os manipuladores de eventos são executados. Essencialmente, ele conecta páginas web a scripts ou linguagens de programação.

Embora o DOM seja frequentemente acessado usando JavaScript, não é uma parte da linguagem JavaScript. Ele também pode ser acessado por outras linguagens.

Uma introdução (en-US) ao DOM está disponível.

DOM interfaces
--------------

* `Attr`
* `CharacterData`
* `ChildNode` 
Experimental
* `Comment` (en-US)
* `CustomEvent` (en-US)
* `Document`
* `DocumentFragment`
* `DocumentType` (en-US)
* `DOMError` (en-US)
* `DOMException` (en-US)
* `DOMImplementation` (en-US)
* `DOMString`
* `DOMTimeStamp` (en-US)
* `DOMSettableTokenList`
* `DOMStringList`
* `DOMTokenList` (en-US)
* `Element`
* `Event`
* `EventTarget`
* `HTMLCollection`
* `MutationObserver`
* `MutationRecord` (en-US)
* `Node`
* `NodeFilter`
* `NodeIterator` (en-US)
* `NodeList`
* `ParentNode` 
Experimental
* `ProcessingInstruction`
* `Range` (en-US)
* `Text` (en-US)
* `TreeWalker` (en-US)
* `URL`
* `Window`
* `Worker`
* `XMLDocument` 
Experimental
Interfaces DOM obsoletas
------------------------

O Modelo de Objeto de Documento foi altamente simplificado. Para conseguir isso, as seguintes interfaces presentes na especificação DOM nível 3 ou especificação anterior foi removida. Ainda não está muito claro se alguns podem ser reintroduzidos ou não, mas por enquanto eles têm que ser considerados obsoletos e devem ser evitados:

* `CDATASection` (en-US)
* `DOMConfiguration`
* `DOMErrorHandler`
* `DOMImplementationList`
* `DOMImplementationRegistry`
* `DOMImplementationSource`
* `DOMLocator`
* `DOMObject`
* `DOMUserData`
* `Entity`
* `EntityReference`
* `NamedNodeMap` (en-US)
* `NameList`
* `Notation`
* `TypeInfo`
* `UserDataHandler`
* 
Interfaces HTML
---------------

Um documento contendo HTML é descrito usando o `HTMLDocument` (en-US) interface. Nota-se que a especificação HTML também se extende a `Document` interface.

Um objeto `HTMLDocument` também da acesso á vários recursos de navegadores como a aba ou janela, em que uma página é desenhada usando `Window` interface, o `Style` associado a ele (normalmente CSS), a história do navegador relativa ao contexto, `History`. Eventualmente, `Selection` é feito no documento.

### HTML elemento interfaces

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

* `CanvasRenderingContext2D`
* `CanvasGradient` (en-US)
* `CanvasPattern` (en-US)
* `TextMetrics` (en-US)
* `ImageData` (en-US)
* `CanvasPixelArray` (en-US)
* `NotifyAudioAvailableEvent`
* `HTMLAllCollection` (en-US)
* `HTMLFormControlsCollection` (en-US)
* `HTMLOptionsCollection` (en-US)
* `HTMLPropertiesCollection`
* `DOMStringMap`
* `RadioNodeList` (en-US)
* `MediaError` (en-US)
### Obsoleto HTML interfaces

* `HTMLIsIndexElement`
SVG interfaces
--------------

### SVG elemento interfaces

* `SVGAElement`
* `SVGAltGlyphElement`
* `SVGAltGlyphDefElement`
* `SVGAltGlyphItemElement`
* `SVGAnimationElement` (en-US)
* `SVGAnimateElement` (en-US)
* `SVGAnimateColorElement` (en-US)
* `SVGAnimateMotionElement` (en-US)
* `SVGAnimateTransformElement`
* `SVGCircleElement` (en-US)
* `SVGClipPathElement` (en-US)
* `SVGColorProfileElement`
* `SVGComponentTransferFunctionElement` (en-US)
* `SVGCursorElement` (en-US)
* `SVGDefsElement` (en-US)
* `SVGDescElement` (en-US)
* `SVGElement` (en-US)
* `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)
* `SVGFEFloodElement` (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)
* `SVGFEFuncRElement` (en-US)
* `SVGFEFuncGElement` (en-US)
* `SVGFEFuncBElement` (en-US)
* `SVGFEFuncAElement` (en-US)
* `SVGFilterElement` (en-US)
* `SVGFilterPrimitiveStandardAttributes`
* `SVGFontElement` (en-US)
* `SVGFontFaceElement` (en-US)
* `SVGFontFaceFormatElement` (en-US)
* `SVGFontFaceNameElement` (en-US)
* `SVGFontFaceSrcElement` (en-US)
* `SVGFontFaceUriElement` (en-US)
* `SVGForeignObjectElement` (en-US)
* `SVGGElement` (en-US)
* `SVGGlyphElement` (en-US)
* `SVGGlyphRefElement` (en-US)
* `SVGGradientElement` (en-US)
* `SVGHKernElement` (en-US)
* `SVGImageElement` (en-US)
* `SVGLinearGradientElement` (en-US)
* `SVGLineElement` (en-US)
* `SVGMarkerElement` (en-US)
* `SVGMaskElement` (en-US)
* `SVGMetadataElement` (en-US)
* `SVGMissingGlyphElement` (en-US)
* `SVGMPathElement` (en-US)
* `SVGPathElement` (en-US)
* `SVGPatternElement` (en-US)
* `SVGPolylineElement` (en-US)
* `SVGPolygonElement` (en-US)
* `SVGRadialGradientElement` (en-US)
* `SVGRectElement` (en-US)
* `SVGScriptElement` (en-US)
* `SVGSetElement` (en-US)
* `SVGStopElement` (en-US)
* `SVGStyleElement` (en-US)
* `SVGSVGElement` (en-US)
* `SVGSwitchElement` (en-US)
* `SVGSymbolElement` (en-US)
* `SVGTextElement` (en-US)
* `SVGTextPathElement` (en-US)
* `SVGTitleElement` (en-US)
* `SVGTRefElement` (en-US)
* `SVGTSpanElement` (en-US)
* `SVGUseElement` (en-US)
* `SVGViewElement` (en-US)
* `SVGVKernElement` (en-US)
### SVG data type interfaces

Aqui estão a DOM API para tipos de dados utilizados nas definições de propriedades SVG e atributos.

**Nota:** Starting in Gecko 5.0, the following SVG-related DOM interfaces representing lists of objects are now indexable and can be accessed ; in addition, they have a length property indicating the number of items in the lists: `SVGLengthList` (en-US), `SVGNumberList` (en-US), `SVGPathSegList`, and `SVGPointList` (en-US).

#### Static type

* `SVGAngle` (en-US)
* `SVGColor`
* `SVGICCColor`
* `SVGElementInstance`
* `SVGElementInstanceList`
* `SVGLength` (en-US)
* `SVGLengthList` (en-US)
* `SVGMatrix` (en-US)
* `SVGNumber` (en-US)
* `SVGNumberList` (en-US)
* `SVGPaint`
* `SVGPoint` (en-US)
* `SVGPointList` (en-US)
* `SVGPreserveAspectRatio` (en-US)
* `SVGRect` (en-US)
* `SVGStringList` (en-US)
* `SVGTransform` (en-US)
* `SVGTransformList` (en-US)

#### Animated type

* `SVGAnimatedAngle` (en-US)
* `SVGAnimatedBoolean` (en-US)
* `SVGAnimatedEnumeration` (en-US)
* `SVGAnimatedInteger` (en-US)
* `SVGAnimatedLength` (en-US)
* `SVGAnimatedLengthList` (en-US)
* `SVGAnimatedNumber` (en-US)
* `SVGAnimatedNumberList` (en-US)
* `SVGAnimatedPreserveAspectRatio` (en-US)
* `SVGAnimatedRect` (en-US)
* `SVGAnimatedString` (en-US)
* `SVGAnimatedTransformList` (en-US)
### SMIL related interfaces

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

* `SVGAnimatedPathData`
* `SVGAnimatedPoints` (en-US)
* `SVGColorProfileRule`
* `SVGCSSRule`
* `SVGExternalResourcesRequired`
* `SVGFitToViewBox`
* `SVGLangSpace`
* `SVGLocatable`
* `SVGRenderingIntent` (en-US)
* `SVGStylable` (en-US)
* `SVGTests`
* `SVGTextContentElement` (en-US)
* `SVGTextPositioningElement` (en-US)
* `SVGTransformable`
* `SVGUnitTypes` (en-US)
* `SVGURIReference` (en-US)
* `SVGViewSpec`
* `SVGZoomAndPan`
Veja também
-----------

* DOM Exemplos (en-US)