2016-12-24 1 views
2

Wie erhalten Sie ein Element, das in einer Schattenwurzel enthalten ist, zu dem Element, das die genannte Schattenwurzel enthält? Gibt es einen einzigen Weg, um dies zu erreichen, unabhängig davon, wo sich ein Element in der Struktur befindet (d. H. Einen Verweis auf entweder element2 oder element3, erhalten Sie den Verweis auf element1)?Zugriff auf das Host-Element aus dem Schattenstamm mit Shadow DOM v1?

element1 
└ #shadow-root 
    └ element2 
    └ element3 
+1

Können Sie 'html' und die' javascript' enthalten, die Sie in Frage versucht haben? – guest271314

+0

Möchten die Downvoters erklären? – darrylyeo

Antwort

4

für Shadow DOM v1, können Sie die getRootNode() Methode verwenden.

Dann erhalten die host Attribut:

event.target.getRootNode().host 
+1

Perfekt! Ich hatte eine Ahnung, dass es ein eingebautes war; manuell den Baum hinaufzugehen war viel zu mühsam. – darrylyeo

0

können Sie halten parentNode laufen, bis Sie den Schatten Wurzel, und dann host bekommen.

function getHostElement(el) { 
    while (el.parentNode) el = el.parentNode; 
    return getShadowRoot(el).host; 
} 
var element1 = document.createElement('element1'); 
var element2 = document.createElement('element2'); 
var element3 = document.createElement('element3'); 
element2.appendChild(element3); 
var shadowRoot = element1.createShadowRoot(); 
shadowRoot.appendChild(element2); 
getHostElement(element3); // element1 
Verwandte Themen