Document.adoptNode()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Adopte un noeud. Le noeud (et son sous-arbre) est supprimé du document dans lequel il se trouve (le cas échéant) et son ownerDocument
(document propriétaire) est remplacé par le document en cours. Le noeud peut ensuite être inséré dans le document en cours.
Syntaxe
node = document.adoptNode(externalNode);
node
-
est le noeud adopté qui a maintenant ce document en tant que son
ownerDocument
(document propriétaire). LeparentNode
du noeud estnull
, car il n'a pas encore été inséré dans l'arborescence du document. Notez quenode
etexternalNode
sont le même objet après cet appel. externalNode
-
est le noeud à adopter existant dans un autre document.
Exemple
var iframe = document.getElementById("my-iframe");
var iframeImages = iframe.contentDocument.getElementsByTagName("img");
var newParent = document.getElementByTagName("images");
for (var i = 0; i < iframeImages.length; i++) {
newParent.appendChild(document.adoptNode(iframeImages[i]));
}
Notes
En général l'appel de adoptNode
peut échouer en raison du nœud source provenant d'une implémentation différente, mais cela ne devrait pas poser de problème avec les implémentations du navigateur.
Les nœuds provenant de documents externes doivent être clonés à l'aide de document.importNode()
(ou adoptés avec
document.adoptNode()
) avant de pouvoir être insérés dans le document courant. Pour en savoir plus sur les problèmes
de Node.ownerDocument
, consultez la FAQ DOM du W3C (en anglais).
Gecko n'obligeait pas à utiliser document.importNode()
et document.adoptNode()
avant sa version 1.9. Depuis les versions 1.9
alphas, si un nœud n'est pas adopté ou importé avant d'être utilisé dans un autre document, l'exception
WRONG_DOCUMENT_ERR
est déclenchée (NS_ERROR_DOM_WRONG_DOCUMENT_ERR
). implémentation dans le bug 47903.