我试图从阴影根目录中选择一个标记,但不起作用。那么,如何从嵌套的阴影根元素中选择特定的标记呢?
#shadow-root(open)
<start>
#shadow-root(open)
<plural>
#shadow-root(open)
<main>
#shadow-root(open)
<content>
<p>..text..</p>
</content>
</main>
</plural>
</starts>打字本:
let inside = this.shadowRoot.querySelector('content').innerHTML;
console.log(inside);发布于 2022-02-25 17:00:38
对于未知级别的shadowRoot,您需要“遍历DOM”,并将深入到shadowRoots中:
<my-component>
#shadow-root(open)
<my-component>
#shadow-root(open)
<my-component>
#shadow-root(open)
<content>
<p>..text..</p>
</content>
</my-component>
</my-component>
</my-component>
<script>
customElements.define("my-component", class extends HTMLElement {
constructor() {
super().attachShadow({mode:"open"}).innerHTML = `<slot></slot>`;
}
})
const shadowDive = (
el,
selector,
match = (el, root) => {
console.warn('match', el, root);
},
root = el.shadowRoot || el
) => {
root.querySelector(selector) && match(root.querySelector(selector), root);
[...root.querySelectorAll("*")].map(el => shadowDive(el, selector, match));
}
shadowDive(document.body, "content"); // note optional parameters
</script>
https://stackoverflow.com/questions/71267809
复制相似问题