DOM 0

DOM0 (Web)

[7] DOM0 (DOM 水準 (レベル) (level) 0) は、 主に Webブラウザーによって実装されている、Web 利用者エージェントプラットフォーム API の総称です。

[8] 長らく DOM0 は標準不在の状況が続いていましたが、最近では Web Applications 1.0 (HTML5) によって規定されています。 (もっとも、 WA1 では「DOM0」という語は使っていません。)

DOM0 API

[28]DOM0」の範囲は曖昧ですが、次の機能 (の一部) を指して DOM0 と言うことがあります。

x
機能
current
現行仕様
old
旧仕様
x
[13] Window
current
HTML Standard
x
[14] Navigator
current
HTML Standard
x
[15] History
current
HTML Standard
x
[16] Location
current
HTML Standard
x
URLUtils
current
HTML Standard
old
URL Standard
x
[17] BarProp
current
HTML Standard
x
[20] Screen
current
CSSOM View
x
[19] Option, Image
current
HTML Standard
x
[21] HTMLDocument
current
HTML Standard
old
DOM1 HTML, DOM2 HTML
x
HTMLCollection
current
DOM Standard
old
DOM1 HTML, DOM2 HTML, HTML Standard
x
[18] navigator.mimeTypes, navigator.plugins
current
HTML Standard
x
[30] String extras
current
ES (ES2015 以後)
old
JavaScript Standard
x
[22] イベントハンドラー (event handler attributes)
current
HTML Standard
old
HTML4
x
[23] Event
current
HTML Standard, DOM Standard, UI Events
old
DOM2イベント, DOM3イベント

[29] Netscape 2/3 や IE3 が実装していた原初の DOM (当時でいう JavaScript のうち、クライアント側でのみ実装されていた API) という意味では以上でしょうが、 W3C DOM 以前という意味で次のものも DOM0 に含められることがあります。

x
機能
current
現行仕様
old
旧仕様
x
[24] IE4 DOM
current
HTML Standard / DOM Standard
x
document.layers
current
廃止
x
[25] IEのイベントモデル
current
廃止
x
[26] Netscape4のイベントモデル
current
廃止
x
[27] IEのCSSOM
current
廃止
x
crypto
current
Web Crypto (ただし旧機能は廃止)
x
escape, unescape
current
ECMAScript
x
atob, btoa
current
HTML Standard
x
window.external
current
HTML Standard (しかしその後廃止)
[33] ちなみに IE4 / Netscape4 当時の JavaScript+DOM の機能は、 ECMAScript 本体仕様にあるものとここに示したものの他、 LiveConnectJSSSwatchcode signing (<script archive>)、 ActiveXObject くらいでしょうか。

歴史

「DOM0」の登場

[9] DOM1 ではそれまで Webブラウザーで実装されていた JavaScript API のすべてが標準化されたわけではありませんでした (むしろ旧来の JS API と共通する部分の方が少なかったです)。 そのため、DOM1 以前の DOM ということでそれらは「DOM水準0」と呼ばれるようになりました。

[1]

DOM 水準 (level) 0 とは、 NN 3.0 及び IE 3.0 で提供されていた機能の混合である。

[10] DOM0 の範囲はそもそも明確ではありません。 >>1DOM1 の説明に従うなら NN3 と IE3 が実装していた機能ですが、その和集合なのか積集合なのか、 DOM0 とそれ以外の JavaScript API の境界はどこなのか、 と細かいことを言えばきりがありません。現在では DOM1 以降に含まれる機能は「DOM0」 に含まないニュアンスで語られることが多いように感じますが、 >>1 では「DOM0 との互換性」が語られており、元々は DOM1 の機能を除外する意図はなかったようです。 また、時代が下ると NN4IE4 以降で追加された非標準の機能を「DOM0」 に含めることも出てきました。

Web Applications 1.0

[11] W3CDOM1 以後も「DOM0」の標準化に興味を示しませんでした。 しかし Webブラウザー後方互換性のために引き続き DOM0 API を実装し続ける必要がありました。そうはいっても DOM0 はほとんど undocumented に近く、他の Webブラウザーの動作をリバースエンジニアリングするしかない状況でした。 ですから、大まかな動作こそ共通してはいても、すべてが実装されていなかったり、 細かな挙動が異なっていたりしていました。

[12] 2004年に設立された WHATWG は、Webアプリケーションのための新規 API を整備すると共に、既存の Webブラウザーの undocumented な API を標準化し、Web相互運用性を向上させることを目指していきました。 DOM0 の機能は当初は Web Controls 1.0 で、後に Web Applications 1.0 で文書化されていき、現在ではほとんどの API が明確に規定されるに至っています。

関連

[32] Xendom0 とは無関係です。

メモ

[5] The Object Models <http://book.itzero.com/read/others/McGraw.Hill.Osborne.JavaScript.2.0.The.Complete.Reference.Second.Edition.eBook-LiB_html/8166final/LiB0066.html> (名無しさん)

[6] mrclay.org &#187; Archive &#187; Kill these DOM0 shortcuts ( 版) <http://mrclay.org/index.php/2007/06/25/kill-these-dom0-shortcuts/> (名無しさん 2007-06-26 13:25:59 +00:00)

[31] Bring outdated parts of the FAQ up to date (sideshowbarker著, ) <https://github.com/whatwg/html/commit/5d512fe6f54a332d13ff2d0fee59f12a8d1701b3>

[34] Re: compatibility with the DOM Level 0 (Michael Champion著, ) <https://lists.w3.org/Archives/Public/www-dom/1999OctDec/0188.html>