Document.adoptNode()

Document.adoptNode() transfiere un node desde otro document al documento del método. El nodo adoptado y sus subnodos se eliminan del documento original (si lo hubiera), encuentra  y su ownerDocument se cambia por el documento actual. El nodo puede entoces ser insertado en el documento actual.

Sintaxis

node = document.adoptNode(externalNode);
node
El nodo adoptado que ahora tiene este documento como su ownerDocument. El parentNode del nodo es null, esto se debe a que aún no a sido insertado en el árbol del documento. Tenga en cuenta que node y externalNode son el mismo objeto después de esta llamada.
externalNode
El nodo a ser adoptado desde otro documento.

Ejemplo

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));
});

Notas

Los nodos de documentos externos deberían ser clonados utilizando document.importNode() (o adoptado utilizando document.adoptNode()) antes de que puedan ser insertados en el documento actual. Para más incidencias sobre Node.ownerDocument, vea el W3C DOM FAQ.

Firefox actualmente no obliga a cumplir esta regla (lo hizo un tiempo durante el desarrollo de Firefox 3, pero muchos sitios se rompían cuando esta regla era obligatoria). Animamos a los desarrolladores web a que corrijan su código para seguir esta regla con el fin de mejorar la compatibilidad futura.

Epecificación

Compatibilidad con navegadores

BCD tables only load in the browser

Vea también