[1] [DFN[[[IE4 DOM]]]] は、 [[IE4]] (以降) で実装された [[DOM]] [[API]] の通称です。

[4] [[文書]]の一部にしかアクセスできないそれまでの [[DOM0]] とは一線を画し、
[[文書]]を構成するすべての[[要素]]と[[属性]]の読み書きが可能であり、
[[Web]] を単なる文書共有ネットワークからハイパーテキストアプリケーションプラットフォームへと進化させるものでした。

[5] [[W3C]] での[[標準化]]のために提出されましたが、
[[政治的理由]]からそのままの[[標準化]]ではなく、
[[メソッド名]]などがまったく異なり一部の機能も欠いたものが [[DOM1]]
となりました。そのため [[Web開発者]]は長年 [[W3C DOM]] と [[IE4 DOM]]
の互換性問題に悩まされることとなりました。

* W3C DOM に取り入れられたもの

[FIG(short list)[
- [[文書木]] ([[要素]]オブジェクト・モデル)
- [[reflect]]
- [CODE(HTMLe)@en[[[table]]]] オブジェクト・モデル
- [CODE(DOMa)@en[[[style]]]] [[属性]]
- [CODE(DOMa)@en[[[currentStyle]]]]
]FIG]

[8] [[DOM0]] 時代の [CODE[Document]] の [CODE[HTMLCollection]] をそのまま残しつつ新たに[[文書木]]の
[[API]] が追加されたため、[[配列]]とは似て非なる [[live]] [CODE[HTMLCollection]]
と[[文書木]]という二重構造が生まれることとなりました。

* 他のブラウザーにも実装され、 WHATWG により標準化されたもの

[9] [[W3C DOM]] が[[標準化]]しなかった [[API]] の多くも、
[[Web開発者]]が多く使うこととなり、他の [[Webブラウザー]]も対応せざるを得ませんでした。
結果10年の時を経て [[WHATWG]] によって[[標準化]]されることとなりました。

[FIG(short list)[
- [CODE(JS)@en[[[document.all]]]]
- [CODE(DOMa)@en[[[children]]]]
- [CODE(DOMa)@en[[[innerHTML]]]]
- [CODE(DOMa)@en[[[outerHTML]]]]
- [CODE(DOMm)@en[[[insertAdjacentHTML]]]]
- ([CODE(DOMa)@en[[[innerText]]]])
- [CODE(DOMa)@en[[[activeElement]]]]
- [CODE(DOMm)@en[[[execCommand]]]]
- [[DnD]]
- ([CODE(DOMi)@en[[[XMLHttpRequest]]]])
]FIG]

* その他

- [[空白]]のみの[[テキスト節点]]は [[DOM]] に現れない
- [[expando]]
- 要素属性のオブジェクト・モデル
-- 要素の[[内容属性]]と[[IDL属性]]は同じもの
-- 存在する内容属性は要素の種類に関わらず共通
- [[開始タグ]]を指定した [CODE[createElement]]
- [[IE4事象モデル]]
-- [CODE[attachEvent]]
-- [CODE[detachEvent]]
- [[IE4 CSSOM]]

* 関連

[6] [[IE4 DOM]] を含む [[JavaScript]] の機能や [[CSS]]、[[HTML]] といった現在でいう
[[Webプラットフォーム]]のことを、特に新機能を強調して、当時は [[DHTML]] といいました。

[7] 同じくバージョン4世代の [[Netscape4]] の [[JavaScript]] [[API]]
は [[DOM0]] の延長線上に [CODE[document.layers]] などの拡張を施したもので、
こちらも [[DHTML]] と呼ばれ対立技術とされていました。
現代の視点からは [[Netscape]] の [[API]] は[[文書]]の一部にしかアクセスできないままの不完全なもので、
[[IE4 DOM]] の方がより柔軟で強力なものだといえますが、
当時はまだその真の力を理解していた人はほとんどいませんでした。

* メモ


[10] 
[CITE@EN-US[DHTML Methods]], [[InetSDK]], [TIME[2024-08-17T06:06:42.000Z]], [TIME[2000-11-09T14:38:25.238Z]] <https://web.archive.org/web/20001109143300/http://www.msdn.microsoft.com/workshop/author/dhtml/reference/methods.asp#om40_methods>

[11] 
[CITE@EN-US[DHTML Collections]], [[InetSDK]], [TIME[2024-08-17T06:07:15.000Z]], [TIME[2000-11-15T08:00:45.554Z]] <https://web.archive.org/web/20001115075500/http://msdn.microsoft.com/workshop/author/dhtml/reference/collections.asp#om40_coll>


[FIG(quote)[
[FIGCAPTION[
[2] ([TIME[2015-06-17 22:52:45 +09:00]] 版)
<http://game.gr.jp/about/chkbrowser/getElementById.htm>
]FIGCAPTION]

> W3C-DOMのdocument.getElementByIdとIE4のDOM、それからNN4だけに実装されたlayersを見てブラウザを分岐する方法です。

]FIG]

[12] [CITE@EN-US[Working with Windows, Frames, and Dialog Boxes]], [[InetSDK]], [TIME[2024-08-17T06:14:00.000Z]], [TIME[2000-10-18T08:16:10.691Z]] <https://web.archive.org/web/20001018081421/http://msdn.microsoft.com/workshop/author/om/windows_frames_dialogs.asp>



[3] [CITE@en[JavaScript - The IE 4 DOM]]
([TIME[2015-06-17 22:53:23 +09:00]] 版)
<http://www.tutorialspoint.com/javascript/javascript_ie4_dom.htm>

[13] [CITE@EN-US[MSHTML]], [[InetSDK]], [TIME[2024-08-17T06:15:26.000Z]], [TIME[2000-11-20T05:03:06.043Z]] <https://web.archive.org/web/20001120050000/http://msdn.microsoft.com/workshop/browser/mshtml/mshtml.asp>


[14] 
[CITE@EN-US[Document Object Model Overview]], [[InetSDK]], [TIME[2024-08-17T06:19:56.000Z]], [TIME[2000-11-17T02:46:17.681Z]] <https://web.archive.org/web/20001117023900/http://msdn.microsoft.com/workshop/author/dom/domoverview.asp>


[15] 
[CITE@EN-US[How to Build Tables Dynamically]], [[InetSDK]], [TIME[2024-08-17T06:25:22.000Z]], [TIME[2000-10-29T17:58:26.715Z]] <https://web.archive.org/web/20001029175821/http://msdn.microsoft.com/workshop/author/tables/buildtables.asp>


[16] 
[CITE@EN-US[Dynamic Content]], [[InetSDK]], [TIME[2024-08-17T06:28:54.000Z]], [TIME[2000-11-17T04:55:17.486Z]] <https://web.archive.org/web/20001117044000/http://msdn.microsoft.com/workshop/author/dyncontent/content.asp>

[17] 
[CITE@EN-US[Web Workshop - Dynamic HTML Object Model Introduction]], [[Nancy Cluts]], [TIME[2024-08-17T06:32:38.000Z]], [TIME[2000-11-21T11:11:32.130Z]] <https://web.archive.org/web/20001121105100/http://msdn.microsoft.com/workshop/author/om/omdoc.asp>
