JavaScriptから使うDOM Level 2リファレンス

DOMについての簡単な説明

DOM (Document Object Model)は、妥当なHTML、または整形式XMLで書かれた文書に対するAPIです。 これらの文書の(ほとんど)すべての内容にアクセスしたり、内容を変更したり、追加したり、削除したり、という動作を定義しています。 この規格自体はCORBAに従っているため、どのようなオブジェクト指向言語でも使うことができますが、 特にJavaやECMAScript(JavaScript, JScript)で使われることを想定しています。 この文書ではECMAScriptからDOMを用いるのを前提としています。

DOMでは、HTML, XML文書をオブジェクトがツリー状に集まったものとして論理構造を見立てています。例えば以下のような文書(の一部)は、下のツリーのようなオブジェクトの集まりとして考えられます。

<TABLE>
<TBODY>
<TR> 
<TD>Shady Grove</TD>
<TD>Aeolian</TD> 
</TR>
<TR>
<TD>Over the River, Charlie</TD>
<TD>Dorian</TD>
</TR>
</TBODY>
</TABLE>
graphical representation of the DOM of the example table

DOMは今のところ3つの水準に分かれていて、さらに水準の中でもいくつかの機能(モジュール)を選択して実装することが可能です。

Level 3のうち灰色背景の3はまだ正式なRecommendationになっていないものです。

モジュール名 仕様書 実装に必要なモジュール 水準 注記
Core Core - 1, 2, 3 Level 1では"XML" Fundamental Interfaces
XML Core Core 1, 2, 3 Level 1では"XML" Extended Interfaces
HTML HTML Core 1, 2 -
Views Views (Level 2), Views and Formatting (Level 3) Core 2, 3 Level 3では"ViewsAndFormatting"に変更になる様子(Working Group Note)
VisualViewsAndFormatting Views and Formatting ViewsAndFormatting 3 Working Group Note
StyleSheets Style Core 2 -
CSS Style Views, StyleSheets 2 -
CSS2 Style CSS 2 -
Events Events Core 2, 3 Level 3はWorking Group Note
UIEvents Events Views, Events 2, 3 Level 3はWorking Group Note
MouseEvents Events UIEvents 2, 3 Level 3はWorking Group Note
TextEvents Events UIEvents 3 Working Group Note
KeyboardEvents Events UIEvents 3 Working Group Note
MutationEvents Events Events 2, 3 Level 3はWorking Group Note
MutationNameEvents Events MutationEvents 3 Working Group Note
HTMLEvents Events Events 2, 3 Level 3はWorking Group Note
Traversal Traversal and Range Core 2 -
Range Traversal and Range Core 2 -
LS Load and Save Core 3 -
LS-Async Load and Save LS 3 -
Validation Validation Core 3 -
XPath XPath Core 3 Working Group Note
LS-AS Abstruct Schemas LS 3 Note
AS-READ Abstruct Schemas Core 3 Note
AS-EDIT Abstruct Schemas Core, LS-AS 3 Note
AS-DOC Abstruct Schemas Core, LS-AS 3 Note

凡例(色づけ)

定義されているモジュールがそれぞれ:

主要インタフェース一覧

その他の型

void
値がない。値を返さないメソッドがこの型をとる。
boolean
値にtrueまたはfalseをとる普通の真偽値型。
short
long
unsigned short
unsigned long
Cでは区別するのだが、ECMAScriptではどれもただの数値(整数)型。
DOMString
文字列型。UTF-16でエンコードされた1文字16ビットの文字列。
DOMTimeStamp
ミリ秒を表すunsigned long long型。ただしECMAScriptにおいては(整数では扱いきれないため)Date型で実装される。

このリファレンスでのローカル用語

RO
読み込み専用(ReadOnly)
X
例外発生(eXception)
メソッド実行時に例外発生(eXception)
XS
属性値設定時に例外発生(eXception on Setting)
XR
属性値読み込み時に例外発生(eXception on Retrieval) (余談:eXception on Readingでいいような気がするが辞書引くと全然違う)

ブラウザの対応状況

あまり真面目に調べていませんが、DOMImplementationのサンプルにそれらしき表があります。たまに書いていることもあります。

ローカルに保存

2009/4/19版zip圧縮 (139KB ← 309KB)

注意書き

このリファレンスの閲覧のためのブラウザとしては、Firefox, Opera 7以降, Safari, Chromeを推奨しています。 Internet Explorer 7以下は非推奨です。 特に、定義区分を示すのに色分けを使っていますが、色盲への配慮としてIE7等では実装されていないCSSの:after疑似要素しか用意していません。

「嘘の吐き方」の方向性

このリファレンスはできるだけDOMの仕様に従うように書いていますが、一部意図的に嘘を混ぜた部分があります。

基本的に(X)HTML+ECMAScript+DOMの利用を念頭に置いて作成しているので、(X)HTMLの事情やECMAScriptの事情に合わせて改変していることがあります。 Javaのように型に煩い言語だと、本来は違う型でキャストしなければ使えないものをまとめて書いていたりします。 仕様書では何らかの理由でややこしく書いていても、実態がシンプルならばシンプルな実態に合わせています。

このようなポリシーですので、単純に「仕様書と合っていない」等の批判はご遠慮願います。 逆に「その嘘は合理的でない」等の批判はどんどんいただきたいところです。

あと、たまにXML等への理解が欠けていて勘違い記述な嘘があるかもしれません。そのあたりもご指摘願えると幸いです。

参考文献

全DOM仕様書(英文) DOM Technical Reports @ W3C

DOM1(和訳) 文書オブジェクトモデル(DOM)第1水準 仕様書 @ どら猫本舗

DOM2,3(和訳,編集) Scripts @ MetaGraphic Cell