🔖

学習ログ:DOMとHTML/XMLの関係、そしてブラウザとJavaScriptの役割

に公開

DOMとは何か

DOM(Document Object Model)は、HTMLやXMLといった文書をプログラムで操作できるようにしたデータ構造である。文書をツリー構造に変換し、要素やテキストをノードとして扱えるようにする。

例:

<p>Hello</p>

はDOM上では「pノードの子にテキストノード”Hello”がある」という形で表現される。

HTML/XMLとDOMの関係

  • HTML/XML:文書のデータそのもの(テキストファイルやソースコード)
  • DOM:それをブラウザがパースして生成する内部表現(操作可能なツリー構造)

つまりHTML/XMLが素材、DOMがプログラムから利用可能な調理済みデータ構造にあたる。

ブラウザとJavaScriptの役割

ブラウザはHTML/XMLをパースしてDOMを生成し、さらにそのDOMを操作するための DOM API を提供する。JavaScriptはそのクライアントとしてAPIを利用し、文書の表示内容や構造を操作する。

図にすると以下のようになる:

[HTML/XMLソース]
       ↓ (パース)
   [DOMツリー in ブラウザ]
       ↑          ↓
  (API提供)   (描画エンジンが表示)
       ↑
   [JavaScriptコードが呼び出し]

具体例

<p id="msg">Hello</p>
<script>
  const el = document.getElementById("msg");
  el.textContent = "Hi!";
</script>
  • JavaScriptはdocument.getElementById というDOM APIを呼び出す
  • ブラウザがDOMツリーを書き換える
  • 描画エンジンが再レンダリングし、画面に “Hi!” が表示される

まとめ

  • HTML/XMLは入力(文書データ)
  • DOMはブラウザが生成した内部モデル
  • ブラウザはDOM APIを提供し、JavaScriptはそのAPIを使って文書を間接的に操作する

JavaScriptがDOMを直接触っているように見えて、実際はブラウザのAPIを介して操作している、という点が重要である。

Discussion