JavaScript: cloneNode против importNode
В некоторых примерах кода я заметил различные способы клонирования узла DOM и добавления его к существующему элементу:
element.appendChild(something.cloneNode(true));
element.appendChild(document.importNode(something, true));
Оба имеют эффект копирования узла. Вторая версия кажется более многословной и подразумевает, что копия на самом деле сначала где-то конкретная, хотя ей все еще нужно найти подходящий дом. Тем не менее, он используется MDN и некоторыми другими в качестве иллюстрации использования template
тег. В другом месте они идут для более простых clodeNode
вариант.
Вопрос в том, какая польза от использования importNode
над cloneNode
?
1 ответ
В DOM3 и более ранних версиях importNode предназначался для копирования узлов из других документов, cloneNode - для копирования в том же документе. Но браузеры не обеспечивают этого, поэтому в последнем стандарте DOM cloneNode можно использовать для копирования из другого документа. При использовании DOM в других контекстах придерживайтесь правил DOM3.