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 の開発中は強制していましたが、この規則を強制するとあまりに多くのサイトが壊れました)。今後の互換性を高めるために、ウェブ開発者はこの規則に従うようコードを修正することをお勧めします。

仕様書

ブラウザーの対応

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

凡例

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

関連情報

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

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