문서 객체 모델(DOM)
=============

**문서 객체 모델**(**DOM**)은 메모리에 웹 페이지 문서 구조를 표현함으로써 스크립트 및 프로그래밍 언어와 페이지를 연결합니다. 이때 스크립트는 주로 JavaScript를 의미하나 HTML, SVG, XML 객체를 문서로 모델링 하는 것은 JavaScript 언어의 일부가 아닙니다.

DOM은 문서를 논리 트리로 표현합니다. 트리의 각 브랜치는 노드에서 끝나며, 각 노드는 객체를 갖습니다. DOM 메서드를 사용하면 프로그래밍적으로 트리에 접근할 수 있습니다. 이를 통해 문서의 구조, 스타일, 콘텐츠를 변경할 수 있습니다.

노드는 이벤트 처리기도 포함할 수 있습니다. 이벤트가 발생한 순간, 해당 이벤트와 연결한 처리기가 발동합니다.

**참고:** **더 알아보려면:** DOM 소개 문서를 방문해보세요.

DOM 인터페이스
---------

* `Attr`
* `CDATASection` (en-US)
* `CharacterData`
* `Comment`
* `CustomEvent`
* `Document`
* `DocumentFragment`
* `DocumentType`
* `DOMError` (en-US) 
지원이 중단되었습니다
* `DOMException` (en-US)
* `DOMImplementation` (en-US)
* `DOMTimeStamp` (en-US)
* `DOMStringList` (en-US)
* `DOMTokenList` (en-US)
* `Element` (en-US)
* `Event`
* `EventTarget`
* `HTMLCollection`
* `MutationObserver`
* `MutationRecord`
* `NamedNodeMap` (en-US)
* `Node` (en-US)
* `NodeFilter` (en-US)
* `NodeIterator` (en-US)
* `NodeList`
* `ProcessingInstruction` (en-US)
* `Range`
* `Text`
* `TextDecoder` (en-US) 
Experimental
* `TextEncoder` (en-US) 
Experimental
* `TimeRanges` (en-US)
* `TreeWalker`
* `URL`
* `Window`
* `Worker`
* `XMLDocument` (en-US) 
Experimental
### 더 이상 사용하지 않는 DOM 인터페이스

문서객체모델 매우 단순하게 변하고 있습니다. 이를 위해 다른 DOM 레벨 3 혹은 이전 사양에 있었던 아래의 인터페이스들을 제거했습니다. 향후에 이 중 일부가 다시 도입될 지는 확실하지 않지만 당분간은 모두 폐기된 것으로 간주하고 사용을 피해야 합니다.

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

문서는 다양한 HTML 관련 기능들을 포함하는 HTML 명세에 의해 확장된 `Document` 을 사용해 설명된 HTML 을 포함합니다.

HTML 객체는 또한 `Window` 인터페이스, 이에 관련된 `Style`(보통 CSS), 컨텍스트에 관련된 브라우저의 히스토리인 `History` 를 사용해 페이지가 그려지는 탭이나 창과 같은 브라우저의 다양한 기능들에 접근할 수 있게 해줍니다. 마지막에는, 문서의 `Selection` (en-US) 이 완료됩니다.

자세한 내용은 HTML DOM API (en-US) 문서를 참고하세요.

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)
* `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)
* `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) 
지원이 중단되었습니다
* `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` (en-US)
* `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` (en-US)
* `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)
* `SVGMatrix` (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` (en-US)
* `SVGTransform` (en-US)
* `SVGTransformList` (en-US)

#### 움직이는(animated) 형

* `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` 
지원이 중단되었습니다
* `SVGAnimatedPoints` (en-US)
* `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)