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.

Другие вопросы по тегам