.importNode()
外部ドキュメントから、現在のドキュメント内へ挿入可能なノードのコピーを作成します。
文法
var node = document.importNode(externalNode, deep);
引数 | 説明 |
---|---|
externalNode | インポートされる別のドキュメンとからのノードを指定します。 |
deep | インポートされるノードの子孫もインポートされる必要があるか否かを真偽値で指定します。 |
戻り値 | |
node | ドキュメントにインポートされた新しいノードです。 インポートされた(取り込んだ)だけで、まだドキュメントツリーへ挿入されていないため、 この新しいノードのparentNodeはnullです。 |
注意: DOM4仕様(Gecko 13.0 (Firefox 13 / Thunderbird 13 / SeaMonkey 2.10)に実装されている)では、
deep
は任意の引数です。
もし省略すると、メソッドはdeep
をtrueとし、
深い複製をデフォルトの挙動とします。
浅い複製を作成するには、deep
をfalseに設定しなければいけません。
この仕様は最新の仕様で変更され、もし省略されるとdeep
はfalseであるとして振る舞います。
まだ任意の引数のままですが、後方・前方互換の両方のために、deep
引数は常に提供すべきです。
Gecko 28.0 (Firefox 28 / Thunderbird 28 / SeaMonkey 2.25)では、この引数が省略されると開発者に対して、
コンソールで警告が表示されます。
Gecko 29.0 (Firefox 29 / Thunderbird 29 / SeaMonkey 2.26))以降では、
浅い複製がデフォルトになりました。
例
var iframe = document.getElementsByTagName("iframe")[0];
var oldNode = iframe.contentDocument.getElementById("myNode");
var newNode = document.importNode(oldNode, true);
document.getElementById("container").appendChild(newNode);
注意事項
元のノードは元のドキュメントから削除されません。 インポートされるノードは、その元のノードの複製です。
外部ドキュメントからのノードは、現在のドキュメントへ挿入されることになる前に
document.importNode()
を使用して複製される(または、document.adoptNode()を使用して取り込む)べきです。
Node.ownerDocumentの問題についての詳細を知りたければ、
W3C DOM FAQを参照してください。
Firefoxは現在このルールを強制しません。 (Firefox 3の開発中はこれを行っていましたが、このルールを強制するとあまりにも多くのサイトが壊れてしまった) Webデベロッパーに対しては、この改善された機能の互換性のルールに従うコードに修正することが推奨されています。
ブラウザ互換性
機能 | Chrome | Firefox (Gecko) |
IE | Opera | Safari |
---|---|---|---|---|---|
基本 | ◯ | 1.0 (1.7 or earlier) | 9.0 | 9.0 | ◯ |
DOM 4 version (deep引数) |
◯ | 10 (10) | × | × | Nightly build |
機能 | Android | Firefox Mobile |
IE Mobile |
Opera Mobile |
Safari Mobile |
|
---|---|---|---|---|---|---|
基本 | ? | 1.0 (1) | ? | ? | ? | |
DOM 4 version (deep引数) |
? | 10.0 (10) | ? | ? | ? |
仕様
関連項目
© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
- 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
- MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。