mozilla
Your Search Results

    DOM Implementation and Scriptability

    この記事は Mozilla Japan 翻訳部門または関連グループにより過去に翻訳された文書を移行したものです。 移行元の文書。よって、英語版と内容が異なる場合や、MDN の他の記事との整合性がとれていない場合があります。

    DOM とは?

    • 記述文書を操作するためのインターフェース
    • DOM0 や NS3 と IE3 に代表される
    • W3C DOM レベル 1 の中心機能 + HTML へと飛躍
    • レベル 2、レベル 3 と続く

    標準化されているのは?

    • document オブジェクト
    • 要素、テキスト ノード、コメント、style オブジェクトなど
    • HTML DOM
    • オブジェクト構造の解析による検索と検索範囲の規則
    • ...

    標準化されていないのは?

    • window オブジェクト
    • 専用の属性
    document.all
    document.location
    element.offset*
    element.innerHTML
    element.scroll*
    ...
    • JS 主義
      • 引数の数と種類が可変
      • document オブジェクトと form オブジェクト内での動的な要素検索
      • 範囲と検索の順番

    Mozilla の DOM

    • W3C DOM 互換への努力
    • 旧バージョンとの互換の努力 (document.layers を除く)
    • Mozilla DOM オブジェクトは XPCOM オブジェクト
    • XPIDL インターフェースのうち 「nsIDOM」 で始まるものは仕様が確定済
    • DOM オブジェクトは参照数が記憶され、DOM オブジェクトの入れ物の寿命は JS GC が管理

    Mozilla の document 階層

    • 文書クラス
      • nsDocument と nsHTMLDocument と nsXULDocument
      • 内部のインターフェースは nsIDocument
    • 要素クラス
      • nsGenericElement (nsGenericContainerElement) nsHTML*Element、nsXMLElement、nsXULElement
      • 内部のインターフェースは nsIContent の friend クラス
    • データ ノード クラス
      • nsGenericDOMDataNode
      • nsTextNode, nsCommentNode, nsCDATASection, nsProcessingInstruction, nsDocumentType, ...
      • 内部のインターフェースは nsITextContent (nsIContent)
    • 「Tearoff」 クラス
      • 3Node と要素上の EventTarget とデータ ノード

    Mozilla の window オブジェクト

    Mozilla のスクリプト可能化

    • DOM オブジェクト を JS 環境のまま使う目的で、静的に生成された C/C++ コード (IDLC) と一緒に使われる技術
    • XPConnect と 追加の JS 仕様対応コードでできるようになった

    XPConnect と DOM

    • XPConnect - XPCOM と JS の仲立ち役
    • 参照数/GC メモリ管理形式を使用

    nsIClassInfo

    公開するもの:

    • クラス名
    • 実装済みのインターフェース
    • 言語ごとの補助
    • クラスのフラグ (スレッド、一意性、……)

    スクリプト可能化補助

    • nsIXPCScriptable(XPConnect フック、JS 仕様)
    • 未知の名前の動的な検索
    • 属性の取得、設定、列挙やフック

    スクリプト可能化補助、子弟化

    • JS オブジェクトの親をたどると DOM オブジェクトと同じ
    • 親が無い DOM オブジェクト は広域オブジェクトが親になる

    スクリプト可能化補助、自動の型設定

    • DOM の既定の自動連鎖 (XPConnect が処理)
      XPC wrapper -> XPC wrapper proto -> Object
    • 補助有りの場合
      XPC wrapper -> XPC wrapper proto -> [class proto]* -> Object

    安全性と DOM

    • セキュリティの基本は操作元の身元一致の原則
    • オブジェクトすべてについて安全確認がなされる
    • 広域的なスクリプト操作用の特別な安全コード

    Mozilla の DOM 対 IE の DOM

    • Gecko 1.7.5 以前に document.all はない (undetectable document.all was implemented for quirks mode documents - バグ 248549)
    • window.event が無くて event オブジェクトのインターフェースが違う
    • IE では、広域名前空間内の id で要素が公開される (we do that too since Gecko 1.7.5 for quirks mode documents - バグ 256932)
    • 属性の検索順が違う (i.e. form.submit() and <input name="submit">)

    Original Document Information

    • Author: Johnny Stenback

    ドキュメントのタグと貢献者

    Contributors to this page: Yama, Shimono
    最終更新者: Yama,