給定一個包含在影子根目錄中的元素,我怎樣才能到達承載所述影子根目錄的元素?有沒有一種方法可以實現這一點,而不管元素在樹中的哪個位置(即給定參考element2
或element3
,獲得參考element1
)?如何使用Shadow DOM v1從影子根目錄中訪問主機元素?
element1
└ #shadow-root
└ element2
└ element3
給定一個包含在影子根目錄中的元素,我怎樣才能到達承載所述影子根目錄的元素?有沒有一種方法可以實現這一點,而不管元素在樹中的哪個位置(即給定參考element2
或element3
,獲得參考element1
)?如何使用Shadow DOM v1從影子根目錄中訪問主機元素?
element1
└ #shadow-root
└ element2
└ element3
完美!我有一個預感,它是一個內置的;手動走到樹上太麻煩了。 – darrylyeo
你可以繼續迭代parentNode
,直到你的影子根,然後得到host
。
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
您可以包括'html',並且已在問題試過'javascript'? – guest271314
downvoters會照顧解釋嗎? – darrylyeo