文件物件模型 (DOM)
============

\*\*文件物件模型（*Document Object Model, DOM*）\*\*是 HTML、XML 和 SVG 文件的程式介面。它提供了一個文件（樹）的結構化表示法，並定義讓程式可以存取並改變文件架構、風格和內容的方法。DOM 提供了文件以擁有屬性與函式的節點與物件組成的結構化表示。節點也可以附加事件處理程序，一旦觸發事件就會執行處理程序。 本質上，它將網頁與腳本或程式語言連結在一起。

雖然常常使用 JavaScript 來存取 DOM，但它本身並不是 JavaScript 語言的一部分，而且它也可以被其他語言存取（雖然不太常見就是了）。

這裡有一篇 DOM 的介紹 (en-US)可供查閱。

DOM 介面
------

* `Attr` (en-US)
* `CharacterData` (en-US)
* `ChildNode` 
實驗性質
* `Comment` (en-US)
* `CustomEvent`
* `Document` (en-US)
* `DocumentFragment`
* `DocumentType` (en-US)
* `DOMError` (en-US)
* `DOMException` (en-US)
* `DOMImplementation` (en-US)
* `DOMString`
* `DOMTimeStamp` (en-US)
* `DOMSettableTokenList`
* `DOMStringList` (en-US)
* `DOMTokenList`
* `Element` (en-US)
* `Event`
* `EventTarget`
* `HTMLCollection` (en-US)
* `MutationObserver`
* `MutationRecord` (en-US)
* `Node` (en-US)
* `NodeFilter` (en-US)
* `NodeIterator` (en-US)
* `NodeList`
* `ParentNode` 
實驗性質
* `ProcessingInstruction` (en-US)
* `Range` (en-US)
* `Text` (en-US)
* `TreeWalker` (en-US)
* `URL` (en-US)
* `Window` (en-US)
* `Worker` (en-US)
* `XMLDocument` (en-US) 
實驗性質
棄用的 DOM 介面
----------

文件物件模型正被大量的簡化。為了達成這個目的，下這些介面是在 DOM level 3 或更早的規範中就被刪掉了。由於不清楚是否會被再度納入，請姑且當他們已經被遺棄，並避免使用：

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

一份包含 html 的文件會透過 `HTMLDocument` 介面來描述。注意 HTML 規範也擴展了 `Document` (en-US) 介面。

`HTMLDocument` 物件也提供了瀏覽器功能的存取：分頁、透過 `Window` (en-US) 介面描繪頁面的視窗、與其相關的 `樣式` （通常是 CSS ）、與本文關聯的瀏覽器 `歷史` (en-US)、以及一個文件內的 `選擇器` (en-US)。

### HTML 元素介面

* `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` (en-US)
* `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` (en-US)
* `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` (en-US)
* `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)
### 其他介面

* `CanvasRenderingContext2D` (en-US)
* `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` (en-US)
* `RadioNodeList` (en-US)
* `MediaError` (en-US)
### 棄用的 HTML 介面

* `HTMLIsIndexElement`
SVG 介面
------

### SVG 元素介面

* `SVGAElement` (en-US)
* `SVGAltGlyphElement`
* `SVGAltGlyphDefElement`
* `SVGAltGlyphItemElement`
* `SVGAnimationElement` (en-US)
* `SVGAnimateElement` (en-US)
* `SVGAnimateColorElement` (en-US)
* `SVGAnimateMotionElement` (en-US)
* `SVGAnimateTransformElement` (en-US)
* `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 資料型別介面

這裡是資料型態的 DOM API，在 SVG 特性和性質的定義中被使用。

**備註：** 從 Gecko 5.0 開始，下列 SVG 相關的 DOM 介面物件的表示清單，現在可以被索引且可以像陣列般被取用；此外，他們也有 length 屬性來標示其清單中的項目個數：`SVGLengthList` (en-US)、`SVGNumberList` (en-US)、`SVGPathSegList`，和 `SVGPointList` (en-US)。

#### 靜態類型

* `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)

#### 動畫類型

* `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 相關介面

* `ElementTimeControl`
* `TimeEvent` (en-US)
### 其他的 SVG 介面

* `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`
相關連結
----

* DOM 範例 (en-US)