document.importNode リダイレクト 1

外部ドキュメントからノードのコピーを作成し、現在のドキュメントに挿入できるようにします。

構文

var node = document.importNode(externalNode, deep);
node
ドキュメントにインポートされた新しいノードです。この新しいノードはまだドキュメントツリーに挿入されていないので、parentNodenull です。
externalNode
インポートする対象となる他のドキュメントのノードです。
deep
ノードの子をインポートする必要があるかを示す真偽値です。

補足: DOM4 仕様 (Gecko 13.0 (Firefox 13 / Thunderbird 13 / SeaMonkey 2.10) に実装) では、deep は任意の引数です。省略した場合、メソッドは deep の値に true が設定されたものとして動作し、ディープクローンが既定の動作になります。シャロークローンを作成するには、deepfalse を設定しなければなりません。

この振る舞いは、最新仕様で変更されました。省略した場合、deep の値に false が設定されたものとして動作します。このオプションは依然として任意ですが、後方または前方互換性のため、deep 引数に値を設定すべきです。Gecko 28.0 (Firefox 28 / Thunderbird 28 / SeaMonkey 2.25 / Firefox OS 1.3) で、開発者は引数を省略すべきでないという警告がコンソールに表示されます。Gecko 29.0 (Firefox 29 / Thunderbird 29 / SeaMonkey 2.26) 以降、ディープクローンの代わりにシャロークローンが既定の動作になりました。

var iframe = document.getElementsByTagName("iframe")[0];
var oldNode = iframe.contentWindow.document.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 開発者にはこのルールに従ってコードを修正することを推奨します。

仕様

仕様書 策定状況 コメント
DOM
document.importNode() の定義
現行の標準
Document Object Model (DOM) Level 2 Core Specification
document.importNode() の定義
勧告 初期定義

ブラウザの実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
DOM 2 バージョン (有) 1.0 (1.7 or earlier) 9.0 9.0 (有)
DOM 4 バージョン
(deep optional)
(有) 10 (10) 未サポート 未サポート Nightly build
機能 Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
DOM 2 バージョン ? 1.0 (1) ? ? ?
DOM 4 バージョン
(deep optional)
? 10.0 (10) ? ? ?

参照

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

 最終更新者: ethertank,