--- title: Node.cloneNode() slug: Web/API/Node/cloneNode translation_of: Web/API/Node/cloneNode ---
Метод Node.cloneNode()
возвращает дубликат узла, из которого этот метод был вызван.
var dupNode = node.cloneNode(deep);
node
true,
если дети узла должны быть клонированы или false
для того, чтобы был клонирован только указанный узел.Примечание: в спецификации DOM4 (как реализовано в Gecko 13.0 {{geckoRelease(13)}}), deep
необязательный аргумент. Если он опущен, метод действует как если бы значение deep
было true
, по умолчанию используется глубокое клонирование. Для создания поверхностного клонирования, deep
должен быть установлен как false
.
Это поведение было изменено в последней спецификации, и если опущено значение, метод будет действовать как если бы deep
было false
. Хотя, это все еще не обязательно, вы всегда должны обеспечить агрументом deep
, для прямой и обратной совместимости. С Gecko 28.0 {{geckoRelease(28)}}), консоль предупреждает разработчиков не опускать аргумент. Начиная с Gecko 29.0 {{geckoRelease(29)}}), поверхностный клон, по умолчанию, вместо глубокого клона.
var p = document.getElementById("para1"); var p_prime = p.cloneNode(true);
Клонирование узлов копирует все атрибуты и их значения, в том числе собственных (в линию) перехватчиков. Это не копирует пререхватчики событий, добавленных используя addEventListener()
или тех что назначены через свойства элемента (т.е node.onclick = fn
).
Дубликат узла, возвращенного cloneNode()
не является частью документа, пока не будет добавлен в другой узел, который является частью документа, используя {{domxref("Node.appendChild()")}} или другой метод. Кроме того, не имеет родителя, пока не будет добавлен к другому узлу.
Если deep
установлен как false
, дочерние узлы не клонируются. Любой текст, который содержит узел также не клонируется, как и содержащийся в одном или более дочернем узле {{domxref("Text")}}.
Если deep
установлено как true
, все поддеревья (включая текст, который может быть потомком узла {{domxref("Text")}}) копируется тоже. Для пустых узлов (т.е {{HTMLElement("img")}} и {{HTMLElement("input")}} элементов) это не имеет значения установлен ли deep
как true
или false
.
cloneNode()
может привести к дублированию идентфикаторов элементов в документе.Если исходный узел имеет идентификатор и клон размещен в том же документе, идентификатор должен быть изменен, для того что бы быть уникальным. Имя атрибута также может нуждаться в изменении, в зависимости от будущего имени дубликата.
Чтобы клонировать узел для добавления к другому документу используйте {{domxref("Document.importNode()")}} вместо этого.
Свойство | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
deep как необязательный параметр |
Yes (По умолчанию |
{{CompatGeckoDesktop("13.0")}} | {{CompatVersionUnknown}} | {{CompatUnknown}} |
Yes (По умолчанию |
Свойство | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базовая поддержка | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
deep как необязательный параметр |
{{CompatUnknown}} | {{CompatUnknown}} | {{CompatGeckoMobile("13.0")}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |