--- title: document.importNode slug: Web/API/Document/importNode tags: - API - Copie - Document - Méthodes - Noeud - Reference translation_of: Web/API/Document/importNode ---
{{APIRef("DOM")}}
La méthode {{domxref ("Document")}} importNode()
crée une nouvelle copie du {{domxref ("Node")}} ou {{domxref ("DocumentFragment")}} spécifié à partir d'un autre document, afin qu'il puisse être inséré dans le document actuel. Il n'est pas encore inclus dans l'arbre des documents; Pour ce faire, vous devez appeler une méthode telle que {{domxref ("Node.appendChild", "appendChild ()")}} ou {{domxref ("Node.insertBefore", "insertBefore ()")}}.
var node = document.importNode(externalNode, deep);
externalNode
Node
ou DocumentFragment
à importer dans le document courant. Après l'importation, le nouveau parentNode
du noeud est null
, car il n'a pas encore été inséré dans l'arborescence du document.deep
externalNode
. Si ce paramètre est true
(vrai), alors externalNode
et tous ses descendants sont copiés; si false
(faux), seul le nœud unique, externalNode
, est importé.Note : Dans la spécification DOM4, deep
est répertorié en tant qu'argument facultatif. S'il est omis, la méthode agit comme si la valeur de deep
était true
, par défaut, elle utilisait le clonage profond comme comportement par défaut. Pour créer un clone superficiel, la profondeur doit être définie sur false
.
Ce comportement a été modifié dans la dernière spécification, et s'il est omis, la méthode agira comme si la valeur de deep
était false
. Bien que ce soit toujours facultatif, vous devriez toujours fournir l'argument deep
à la fois pour la compatibilité en amont et en aval. Avec Gecko 28.0 {{geckoRelease (28)}}, la console a averti les développeurs de ne pas omettre l'argument. À partir de Gecko 29.0 {{geckoRelease (29)}}), un clone superficiel est défini par défaut au lieu d'un clone profond.
var iframe = document.getElementsByTagName("iframe")[0];
var oldNode = iframe.contentWindow.document.getElementById("myNode");
var newNode = document.importNode(oldNode, true);
document.getElementById("container").appendChild(newNode);
Le noeud d'origine n'est pas supprimé du document d'origine. Le noeud importé est un clone de l'original.
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.
Spécification | Statut | Commentaire |
---|---|---|
{{SpecName("DOM WHATWG", "#dom-document-importnode", "document.importNode()")}} | {{Spec2("DOM WHATWG")}} | |
{{SpecName("DOM2 Core", "core.html#Core-Document-importNode", "document.importNode()")}} | {{Spec2("DOM2 Core")}} | Définition initiale |
{{Compat("api.Document.importNode")}}