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
. ElparentNode
del nodo esnull
, esto se debe a que aún no a sido insertado en el árbol del documento. Tenga en cuenta quenode
yexternalNode
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
Desktop | Mobile | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Soporte básico | Chrome Soporte completo Si | Edge ? | Firefox Soporte completo Si | IE ? | Opera ? | Safari ? | WebView Android Soporte completo Si | Chrome Android Soporte completo Si | Edge Mobile ? | Firefox Android Soporte completo Si | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
Leyenda
- Soporte completo
- Soporte completo
- Compatibility unknown
- Compatibility unknown