ドキュメントオブジェクトモデル (DOM)
=====================

**ドキュメントオブジェクトモデル** (**Document Object Model**, **DOM**) は、ウェブページを表す HTML のような文書の構造をメモリー内に表現することで、ウェブページとスクリプトやプログラミング言語を接続するものです。ふつうは JavaScript を使用しますが、HTML、SVG、XML などの文書をオブジェクトとしてモデリングすることはコア JavaScript 言語の一部ではありません。

DOM は文書を論理的なツリーで表現します。ツリーのそれぞれの枝はノードで終わっており、それぞれのノードがオブジェクトを含んでいます。 DOM のメソッドでプログラム的にツリーにアクセスできます。これにより、文書構造やスタイルやコンテンツを変更することができます。

ノードにはイベントハンドラーを割り当てることができます。イベントが発生すると、イベントハンドラーが実行されます。

DOM とは何であるか、どのように文書を表現するのかについてもっと学習するのであれば、DOM 入門をご覧ください。

DOM インターフェイス
------------

* `AbortController`
* `AbortSignal`
* `AbstractRange`
* `Attr`
* `CDATASection`
* `CharacterData`
* `Comment`
* `CustomEvent`
* `Document`
* `DocumentFragment`
* `DocumentType`
* `DOMError` 
非推奨
* `DOMException`
* `DOMImplementation`
* `DOMParser`
* `DOMPoint`
* `DOMPointReadOnly`
* `DOMRect`
* `DOMTokenList`
* `Element`
* `Event`
* `EventTarget`
* `HTMLCollection`
* `MutationObserver`
* `MutationRecord`
* `NamedNodeMap`
* `Node`
* `NodeIterator`
* `NodeList`
* `ProcessingInstruction`
* `Range`
* `StaticRange`
* `Text`
* `TextDecoder`
* `TextEncoder`
* `TimeRanges`
* `TreeWalker`
* `XMLDocument`
### 廃止された DOM インターフェイス

ドキュメントオブジェクトモデルは高度に単純化されてきています。このため、 DOM レベル 3 以前の仕様書にあった以下のインターフェイスは削除されています。一部が再導入されるかどうかはまだ不明ですが、当面は廃止されたと考え、使用を避けてください。

* `DOMConfiguration`
* `DOMErrorHandler`
* `DOMImplementationList`
* `DOMImplementationRegistry`
* `DOMImplementationSource`
* `DOMLocator`
* `DOMObject`
* `DOMSettableTokenList`
* `DOMUserData`
* `ElementTraversal`
* `Entity`
* `EntityReference`
* `NameList`
* `Notation`
* `TypeInfo`
* `UserDataHandler`
HTML DOM
--------

HTML を含む文書は、 HTML 仕様で拡張した様々な HTML 固有の機能を含む `Document` インターフェイスを使用して記述されます。具体的には、 `Element` インターフェイスは拡張されて `HTMLElement` を始めとするサブクラスになっており、それぞれが要素の一つ (または深く関係した同類のもの) を表します。

HTML DOM API によって、タブやウィンドウ、 CSS スタイルやスタイルシート、ブラウザーの履歴など、様々なブラウザーの機能にアクセスすることができます。これらのインターフェイスの詳細については、 HTML DOM API のドキュメントにあります。

SVG のインターフェイス
-------------

### SVG 要素のインターフェイス

* `SVGAElement` (en-US)
* `SVGAnimationElement` (en-US)
* `SVGAnimateElement` (en-US)
* `SVGAnimateColorElement` (en-US) 
非推奨
* `SVGAnimateMotionElement` (en-US)
* `SVGAnimateTransformElement` (en-US)
* `SVGCircleElement` (en-US)
* `SVGClipPathElement` (en-US)
* `SVGComponentTransferFunctionElement` (en-US)
* `SVGCursorElement` (en-US)
* `SVGDefsElement` (en-US)
* `SVGDescElement` (en-US)
* `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` 
非推奨
* `SVGFontFaceElement` (en-US) 
非推奨
* `SVGFontFaceFormatElement` (en-US) 
非推奨
* `SVGFontFaceNameElement` (en-US) 
非推奨
* `SVGFontFaceSrcElement` (en-US) 
非推奨
* `SVGFontFaceUriElement` (en-US) 
非推奨
* `SVGForeignObjectElement` (en-US)
* `SVGGElement` (en-US)
* `SVGGeometryElement` (en-US)
* `SVGGlyphElement` (en-US) 
非推奨
* `SVGGlyphRefElement` (en-US) 
非推奨
* `SVGGradientElement` (en-US)
* `SVGGraphicsElement`
* `SVGHatchElement` 
Experimental
* `SVGHatchpathElement` 
Experimental
* `SVGHKernElement` (en-US) 
非推奨
* `SVGImageElement` (en-US)
* `SVGLinearGradientElement` (en-US)
* `SVGLineElement` (en-US)
* `SVGMarkerElement` (en-US) 
Experimental
* `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)
* `SVGTextContentElement` (en-US)
* `SVGTextElement`
* `SVGTextPathElement` (en-US)
* `SVGTextPositioningElement` (en-US)
* `SVGTitleElement` (en-US)
* `SVGTRefElement` (en-US) 
非推奨
* `SVGTSpanElement` (en-US)
* `SVGUseElement` (en-US)
* `SVGViewElement` (en-US)
* `SVGVKernElement` (en-US) 
非推奨
### SVG データ型のインターフェイス

SVG のプロパティと属性の定義で使用されるデータタイプの DOM API を次に示します。

#### 静的型

* `SVGAngle` (en-US)
* `SVGColor` 
非推奨
* `SVGICCColor` 
非推奨
* `SVGElementInstance`
* `SVGElementInstanceList`
* `SVGLength` (en-US)
* `SVGLengthList` (en-US)
* `SVGNameList`
* `SVGNumber` (en-US)
* `SVGNumberList` (en-US)
* `SVGPaint`
* `SVGPathSeg` 
非推奨
* `SVGPathSegClosePath` 
非推奨
* `SVGPathSegMovetoAbs` 
非推奨
* `SVGPathSegMovetoRel` 
非推奨
* `SVGPathSegLinetoAbs` 
非推奨
* `SVGPathSegLinetoRel` 
非推奨
* `SVGPathSegCurvetoCubicAbs` 
非推奨
* `SVGPathSegCurvetoCubicRel` 
非推奨
* `SVGPathSegCurvetoQuadraticAbs` 
非推奨
* `SVGPathSegCurvetoQuadraticRel` 
非推奨
* `SVGPathSegArcAbs` 
非推奨
* `SVGPathSegArcRel` 
非推奨
* `SVGPathSegLinetoHorizontalAbs` 
非推奨
* `SVGPathSegLinetoHorizontalRel` 
非推奨
* `SVGPathSegLinetoVerticalAbs` 
非推奨
* `SVGPathSegLinetoVerticalRel` 
非推奨
* `SVGPathSegCurvetoCubicSmoothAbs` 
非推奨
* `SVGPathSegCurvetoCubicSmoothRel` 
非推奨
* `SVGPathSegCurvetoQuadraticSmoothAbs` 
非推奨
* `SVGPathSegCurvetoQuadraticSmoothRel` 
非推奨
* `SVGPathSegList` 
非推奨
* `SVGPoint` (en-US) 
非推奨
* `SVGPointList` (en-US) 
非推奨
* `SVGPreserveAspectRatio` (en-US)
* `SVGRect` 
非推奨
* `SVGStringList`
* `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)
* `SVGAnimatedPathData` 
非推奨
* `SVGAnimatedPreserveAspectRatio` (en-US)
* `SVGAnimatedRect` (en-US)
* `SVGAnimatedString` (en-US)
* `SVGAnimatedTransformList` (en-US)
### SMIL 関連インターフェイス

* `ElementTimeControl`
* `TimeEvent` (en-US)
### その他 SVG インターフェイス

* `GetSVGDocument`
* `ShadowAnimation`
* `SVGColorProfileRule` 
非推奨
* `SVGCSSRule` 
非推奨
* `SVGDocument`
* `SVGException` 
非推奨
* `SVGFitToViewBox`
* `SVGLocatable` 
非推奨
* `SVGRenderingIntent` (en-US) 
非推奨
* `SVGUnitTypes` (en-US)
* `SVGUseElementShadowRoot`
* `SVGViewSpec` 
非推奨
* `SVGZoomEvent` 
非推奨
仕様書
---

| Specification |
| --- |
| DOM Standard  |

関連情報
----

* DOM の例
* CSS オブジェクトモデル (CSSOM)