Ich möchte eine ganze HTML-DOM einschließlich Schatten DOM Bäume in eine Zeichenfolge serialisiert das heißt einschließlich der Schatten Host und Schatten Wurzel in einer Art und Weise , dass sie rekonstruiert werden können.
Hinweis, shadowRoot
Knoten sind nicht klonierbar; obwohl Sie childNodes
von shadowRoot
iterieren können, um .nodeValue
oder .innerHTML
jedes Knotens innerhalb shadowRoot
abzurufen.
var elems = document.getElementById("host").shadowRoot.childNodes;
var shadowHTML = "";
for (var i = 0; i < elems.length; i++) {
shadowHTML += elems[i].nodeValue || elems[i].outerHTML;
}
Alternativ können Sie .innerHTML
zu .treeRoot
Eigentum shadowRoot
gekettet nennen voll html
von shadowRoot
abzurufen.
var shadowHTML = document.getElementById("host").shadowRoot.treeRoot.innerHTML;
ich den Schatten DOM über .shadowRoot.innerHTML programmatisch zugreifen können aber .outerHTML auf das gesamte DOM oder unter Verwendung eines XMLSerializer beinhaltet nicht die shadowRoot aufrufen.
können Sie .outerHTML
auf .host
genannt verwenden html
des Elements abzurufen innerhalb document
die shadowRoot
hostet.
var host = document.getElementById("host").shadowRoot.host.outerHTML;
Die shadowRoot
kann dann durch die Schaffung eines <template>
Element rekonstruiert werden, das Setzen von .innerHTML
variable shadowHTML
die Zeichenfolge .treeRoot.innerHTML
; Das neu erstellte Element template
an eine shadowRoot
anhängen.
Können Sie 'html',' js' einschließen, die Sie bei Frage versucht haben? – guest271314