Document.adoptNode()

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

構文

const importedNode = document.adoptNode(externalNode);

引数

externalNode
他の文書から取り込まれるノードです。

返値

インポートする文書のスコープ内にコピーされた importedNode

このメソッドを呼び出した後、 importedNode および externalNode は同じオブジェクトになります。

注: importedNodeNode.parentNode は、まだ文書ツリーに挿入されていないので null です。

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

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

外部の文書から取り込まれるノードは、現在の文書に挿入する前に、次のいずれかを実行してください。

ベストプラクティス: Firefox は現在はこの規則を強制しませんが、将来の互換性を向上するためにこの規則に従うことを強くお勧めします。

Node.ownerDocument の問題についての詳細は、 W3C DOM FAQ を参照してください。

仕様書

仕様書 状態 備考
DOM
document.adoptNode の定義
現行の標準

ブラウザーの互換性

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

凡例

完全対応  
完全対応

関連情報