implementationNN 6 IE 5(Mac)/6(Win) DOM 1

implementation オブジェクト (JavaScript による W3C DOMImplementation オブジェクトの参照) には、ドキュメントのコンテナを構成している環境 (つまりブラウザ) がある程度反映されています。このオブジェクトは、document.implementation プロパティを介して操作できます。

 

このオブジェクトのメソッドを使用すると、ブラウザの通知機能がサポートしている DOM モジュールを確認できます。また Netscape 6 の場合、このオブジェクトは、現在のドキュメントツリーの外部に W3C の仮想的な Document オブジェクトおよび DocumentType オブジェクトを作成する際の開始点にもなります。このため、Netscape 6 では、document.implementation プロパティを始点として、外部の XML ドキュメント向けの非表示ドキュメントを作成できます。

 
オブジェクト参照

document.implementation

 
オブジェクト固有のプロパティ

なし

 
オブジェクト固有のメソッド
 
createDocument()createDocumentType()hasFeature()
 
オブジェクト固有のイベントハンドラープロパティ

なし

createDocument()NN 6 IE なし DOM 2

createDocument("namespaceURI", "qualifiedName", docTypeReference)

新たに作成された W3C DOM の仮想的な Document オブジェクトへの参照を返します。このオブジェクトは、HTML ドキュメントの document ノードではありません。Netscape 6 では、load() メソッドにより、この Document オブジェクトが拡張されており、XML ドキュメントをブラウザに読み込めるようになっています。ただし、このドキュメントはユーザーには表示されません。次に、スクリプトを通じて、データソースである XML ドキュメントのドキュメントツリーにアクセスして、情報を HTML ドキュメント内に表示することができます。外部の XML ドキュメントを読み込む場合は、次のように、3 つのパラメータの値が空白となっている Document オブジェクトを作成できます。

var myXDoc = document.implementation.createDocument("", "", null);
 

外部のドキュメントを読み込む場合、関連する名前空間と DOCTYPE はすべて、ドキュメントのコンテンツによって制御されます。その例については、第 5 章の 5.9.2 項を参照してください。

 
パラメータ
 
  • 新たな XML ドキュメント要素の名前空間 URI を示す文字列
  • 新たなドキュメント要素の修飾名を示す文字列
  • DocumentType ノードへの参照。このノードは DocumentImplementation.createDocumentType() メソッドで生成できます。
 
戻り値

空の Document オブジェクトへの参照

createDocumentType()NN 6 IE なし DOM 2

createDocumentType("qualifiedName", "publicID", "systemID")

新たに作成された W3C DOM の仮想的な DocumentType オブジェクトへの参照を返します。このメソッドから返されたオブジェクトは、DocumentImplementation.createDocument() メソッドで使用できます。

 
パラメータ
 
  • 新たなドキュメント要素の修飾名を示す文字列
  • DOCTYPE の公開識別子を示す文字列
  • DOCTYPE のシステム識別子 (通常は、DTD ファイルの URI) を示す文字列
 
戻り値

Document オブジェクトと関連付けられていない DocumentType オブジェクトへの参照

hasFeature()NN 6 IE 5(Mac)/6(Win) DOM 1

hasFeature("feature", "version")

ブラウザアプリケーションが、パラメータで指定されている W3C DOM のモジュールやバージョンに対応している場合 (つまり、仕様に準拠している場合) にブール値 true を返します。これと密接に関連する isSupported() メソッドでは、同じ検査を個々のノードで実行できるため、現在のノードタイプでサポートされている機能を確認できます。この 2 つのメソッドのパラメータ値は同じです。

 

ブラウザに実装されている DOM が各モジュールに適合しているかどうかを確認した上で、true の値を返す処理をどのように行うかは、ブラウザのメーカーに委ねられています。true が返されたといって、それが必ずしも、バグがないこと、または他の実装と整合性があることを意味するものではありません。スクリプト作成者側で注意が必要です。

 

理論上は、プロパティへのアクセスやメソッドの呼び出しに先立って、このメソッドを使用することにより、モジュールのサポート状況を確認できます。次に示すのは、ドキュメントのヘッダ部分のスクリプトで、外部スタイルシートへの動的なリンクにより、CSS2 のサポートが "true" になっています。

var cssFile;
if (document.implementation.hasFeature("CSS", "2.0")) {
    cssFile = "styles/corpStyle2.css";
} else {
    cssFile = "styles/corpStyle1.css";
}
document.write(<link rel='stylesheet' type='text/css' href='" + cssFile + "'>");"
 

要素別のメソッドよりも、このようなブラウザ全体に及ぶメソッドをサポートするブラウザが増えており、開発者による展開を効率化することに役立つと考えられます。

 
パラメータ
 
  • W3C DOM Level 2 で許容されているモジュール名は次のとおりです。大文字と小文字は区別されます。CoreXMLHTMLViewsStyleSheetsCSSCSS2EventsUIEventsMouseEventsMutationEventsHTMLEventsRangeTraversal
  • 第 1 のパラメータで指定されている DOM モジュールのメジャーバージョンとマイナーバージョンを表す文字列。W3C DOM Level 2 であれば、そのモジュールが、固有の番号体系を持つ別の W3C 規格をサポートしている場合であっても、バージョンは 2.0 になります。したがって、HTML で 4.x となる場合でも、HTML DOM モジュールのサポート状況に関する検査では、バージョン 2.0 になります。
 
戻り値

true または false のブール値