首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从阴影根中选择元素标记

如何从阴影根中选择元素标记
EN

Stack Overflow用户
提问于 2022-02-25 15:06:24
回答 1查看 464关注 0票数 0

我试图从阴影根目录中选择一个标记,但不起作用。那么,如何从嵌套的阴影根元素中选择特定的标记呢?

代码语言:javascript
复制
#shadow-root(open)
<start>
   #shadow-root(open)
     <plural>
       #shadow-root(open)
           <main>
              #shadow-root(open)
                 <content>
                    <p>..text..</p>
                 </content>
           </main>
     </plural> 
</starts>

打字本:

代码语言:javascript
复制
  let inside = this.shadowRoot.querySelector('content').innerHTML;
  console.log(inside);
EN

回答 1

Stack Overflow用户

发布于 2022-02-25 17:00:38

对于未知级别的shadowRoot,您需要“遍历DOM”,并将深入到shadowRoots中:

代码语言:javascript
复制
<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>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71267809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档