Рекурсивно скопируйте DOM (включая ShadowDOM) с JavaScript - PullRequest
0 голосов
/ 16 апреля 2020

Итак, я застрял на некоторой липкой проблеме, которую я не смог полностью решить. Мне нужно сделать полную копию (включая стили, элементы и ShadowDOM пользовательских веб-компонентов, которые МОГУТ быть вложенными в некоторых случаях), и я рисую бланк.

Я возился с различными методами обхода DOM вручную (с использованием firstChild, nextElementSibling, et c., А также с использованием коллекций children и / или childNodes). Кажется, я просто не могу понять что-то правильное.

Я знаю стандартную мудрость, и возникнет вопрос: «Но зачем вам копировать Shadow DOM?!?!» - У меня есть бизнес-кейс, который требует этого, и по-настоящему, совершенно, нет прямого пути обхода без реорганизации чудовищного кода в несколько сотен тысяч строк. Я тоже не рад этому, поверьте мне!

Я могу пройти через обычный DOM с помощью пары методов, но я не нахожу хорошего способа клонировать весь DOM. И нет, cloneNode (true) не работает. Он не включает более одного уровня теневых Root копий - любые подэлементы игнорируются.

Спасибо!

...