Document.adoptNode() は、ノードを他の文書からメソッドの文書へ移動します。取り込まれたノードおよびそのサブツリーは (もしあれば) 元の文書から削除され、 ownerDocument が現在の文書に変更されます。その後、ノードを現在の文書に挿入することができます。

構文

node = document.adoptNode(externalNode);
node
この文書に取り込まれ、 ownerDocument がこの文書になったノードです。このノードはまだ文書ツリーに挿入されていないので、 parentNodenull です。なお、この呼び出しの後では nodeexternalNode は同じノードになります。
externalNode
他の文書から取り込まれるノードです。

var iframe = document.querySelector('iframe');
var iframeImages = iframe.contentDocument.querySelectorAll('img');
var newParent = document.getElementById('images');

iframeImages.forEach(function(imgEl) {
  newParent.appendChild(document.adoptNode(imgEl));
});

メモ

外部ドキュメントからのノードは、現在のドキュメントに挿入する前に document.importNode() を使ってクローンを作る (あるいは document.adoptNode() を使って取り込む) べきです。Node.ownerDocument 問題の詳細については W3C DOM FAQ を参照してください。

Firefox では現在このルールを強制していません。Firefox 3 の開発中には強制していた時期もありましたが、このルールを強制すると多くのサイトが機能しなくなってしまうため取りやめになりました。 将来的な互換性を高めるため、Web 開発者にはこのルールに従ってコードを修正することを推奨します。

仕様書

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung Internet
基本対応Chrome 完全対応 ありEdge ? Firefox 完全対応 ありIE ? Opera ? Safari ? WebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile ? Firefox Android 完全対応 ありOpera Android ? Safari iOS ? Samsung Internet Android ?

凡例

完全対応  
完全対応
実装状況不明  
実装状況不明

関連情報

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

このページの貢献者: wbamberg, mfuji09, Marsf, fscholz, AshfaqHossain, ethertank, Sheppy, Shoot
最終更新者: wbamberg,