Я создаю HTML-код в объекте XML DOM, который будет использоваться в качестве содержимого innerHTML элемента div с использованием шаблона XSL. Традиционно мы создаем новый документ XML DOM и добавляем входные параметры как элементы XML для преобразования через javascript. Все это занимает очень много времени, поскольку мы в основном вручную выбираем данные из другого XML-документа, который представляет нашу текущую учетную запись, и копируем данные во временный XML-документ DOM.
Что я хотел бы сделать, так это клонировать соответствующий узел документа учетной записи (т.е. информацию о клиенте) и использовать его в качестве основы для преобразования. Я не хочу использовать документ учетной записи напрямую, так как я хотел бы иметь возможность добавлять определенные входные данные преобразования, не внося изменений в объект учетной записи.
Насколько эффективно использование .cloneNode (true) для желаемого узла, обычно содержащего менее 200 элементов из документа, обычно содержащего более 2000 элементов? Целевая платформа - IE6 без внешних инструментов (например, ActiveX).



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


IE не работает в определенных вещах.
например отмеченные переключатели / флажки не будут отмечены, когда вы добавите свою копию в DOM.
Пример:
http://webbugtrack.blogspot.com/2008/03/bug-199-cant-clone-form-element-in-ie.html
http://webbugtrack.blogspot.com/2007/08/bug-242-setattribute-doesnt-always-work.html
Чтобы увидеть, что на самом деле вернет IE, попробуйте заменить URL-адрес этим в адресной строке одной из ваших страниц и нажмите клавишу ВВОД.
javascript:'<xmp>'+window.document.body.outerHTML+'</xmp>';
Если вы довольны результатами - отлично !, но я думаю, вы в конечном итоге не будете удовлетворены тем, что возвращает IE (как в DOM, так и в этом эквиваленте «строкового» значения.
Насколько я понимаю, проблема не в том, что галочки не ставятся. IE копирует начальное состояние флажков и других тегов
Я думаю, что самая большая уловка заключается в том, что когда вы копируете поле формы с name (99% будет), вы можете только "Что-то вроде" переименовать его. например Он будет отправлен с новым именем, но получить к нему доступ из DOM 0 myForm.elements[newName] не удастся. К сожалению, это только 1 проблема с клонированием в IE.
Если вам не нужны элементы формы, cloneNode - действительно надежный инструмент ...
- а при вставке ajax-данных это невероятно по эффективности ...
Однако, поскольку у IE, в частности, есть история проблем с атрибутами имени, неудобно решать какие-либо из них, если вы вставляете данные ...
- Я не очень понимаю ваш XSL (T) - использование, для меня это звучит как использование заправочной станции как (не! -) удобного места для замены WV 1960 года на Skoda 2008 года ...
Обычно у них есть какая-то общая технология, хотя она не используется таким же образом, компьютеризация в некотором роде просто незначительная проблема, основные проблемы почти в Любые в другом случае! O]
Нужны ли формоэлементы? -)
CloneNode довольно эффективен, но при этом потребляет больше памяти.
Другой подход, который следует рассмотреть, - использовать объект Template и процессор, передавать ваши дополнительные / измененные данные в качестве параметров процессору и элементу, который в противном случае вы бы клонировали в качестве входного элемента. Однако этот подход потребует довольно серьезных модификаций XSL.
Рискну сказать, что использование объекта-шаблона, вероятно, не улучшит скорость. Объект шаблона, вероятно, использует cloneNode или внутренне строит новое дерево DOM.
Этот вопрос требует редактирования, чтобы прояснить, что вы обсуждаете XML DOM cloneNode, а не HTML DOM cloneNode, которые в IE полностью различаются кодовыми базами.