Die Document
-Methode importNode()
erzeugt eine neue Kopie eines konkreten Knotens (Node
) oder Dokumenten-Fragments (DocumentFragment
) eines anderen Dokuments, so dass diese dann in das aktuelle Dokument eingefügt werden kann. An dieser Stelle ist es noch nicht im Dokumentenbaum eingefügt, um das zu erreichen, muss eine Methode wie appendChild()
oder insertBefore()
aufgerufen werden.
Syntax
var knoten = document.importNode(externerKnoten, deep);
externerKnoten
- Der neue Knoten oder das neue Dokumenten-Fragment, welches in das aktuelle Dokument importiert werden soll. Nach dem Import ist der Elternknoten
null
, da der neue Knoten noch nicht in den Dokumentenbaum eingefügt wurde. deep
- Ein boolscher Wert der anzeigt, ob der komplette Unterbaum von
externalNode
importiert werden soll. Ist dieser Parametertrue
, werdenexternalNode
so wie all seine Nachfahren kopiert; Ist erfalse
, wird nur der einzelne Knoten,externalNode
, importiert.
In der DOM4-Spezifikation, ist deep
als optionales Argument angeführt. Wird es weggelassen, verhält sich die Methode als ob der Wert von deep
true
wäre, was zu standardmäßigen tiefen Kopieren führt. Um flach zu kopieren, muss deep
explizit auf false
gesetzt werden.
Dieses Verhalten wurde in der letzten Spezifikation geändert, der Wert von deep
wird bei Weglassen auf false
gesetzt. Obwohl es immer noch optional ist, empfehlen wir für Vorwärts- und Rückwärtskompatibilität das deep
-Argument immer explizit anzugeben. Seit Gecko 28.0 (Firefox 28 / Thunderbird 28 / SeaMonkey 2.25 / Firefox OS 1.3) ist eine Konsolenwarnung implementiert, wenn das Argument weggelassen wird. Seit Gecko 29.0 (Firefox 29 / Thunderbird 29 / SeaMonkey 2.26)) ist flaches Kopieren das Standardverhalten.
Beispiel
var iframe = document.getElementsByTagName("iframe")[0]; var oldNode = iframe.contentWindow.document.getElementById("myNode"); var newNode = document.importNode(oldNode, true); document.getElementById("container").appendChild(newNode);
Anmerkungen
Der Originalknoten wird nicht aus dem Ursprungsdokument entfernt. Der importierte Knoten ist des Weiteren eine Kopie des ursprünglichen.
Nodes from external documents should be cloned using document.importNode()
(or adopted using document.adoptNode()
) before they can be inserted into the current document. For more on the Node.ownerDocument
issues, see the W3C DOM FAQ.
Firefox doesn't currently enforce this rule (it did for a while during the development of Firefox 3, but too many sites break when this rule is enforced). We encourage Web developers to fix their code to follow this rule for improved future compatibility.
Spezifikationen
Spezifikationen | Status | Kommentar |
---|---|---|
DOM Die Definition von 'document.importNode()' in dieser Spezifikation. |
Lebender Standard | |
Document Object Model (DOM) Level 2 Core Specification Die Definition von 'document.importNode()' in dieser Spezifikation. |
Veraltet | Ursprüngliche Definition |
Browserkompatibilität
Desktop | Mobile | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Grundlegende Unterstützung | Chrome Vollständige Unterstützung Ja | Edge Vollständige Unterstützung Ja | Firefox Vollständige Unterstützung 4 | IE Vollständige Unterstützung 9 | Opera Vollständige Unterstützung 9 | Safari Vollständige Unterstützung Ja | WebView Android Vollständige Unterstützung Ja | Chrome Android Vollständige Unterstützung Ja | Edge Mobile Vollständige Unterstützung 12 | Firefox Android Vollständige Unterstützung 4 | Opera Android Vollständige Unterstützung 9 | Safari iOS Vollständige Unterstützung Ja | Samsung Internet Android ? |
deep parameter optional | Chrome Vollständige Unterstützung Ja | Edge Vollständige Unterstützung Ja | Firefox Vollständige Unterstützung 10 | IE Keine Unterstützung Nein | Opera Vollständige Unterstützung Ja | Safari Vollständige Unterstützung Ja | WebView Android Vollständige Unterstützung Ja | Chrome Android Vollständige Unterstützung Ja | Edge Mobile Vollständige Unterstützung Ja | Firefox Android Vollständige Unterstützung 10 | Opera Android Vollständige Unterstützung Ja | Safari iOS Vollständige Unterstützung Ja | Samsung Internet Android ? |
Legende
- Vollständige Unterstützung
- Vollständige Unterstützung
- Keine Unterstützung
- Keine Unterstützung
- Kompatibilität unbekannt
- Kompatibilität unbekannt