相关疑难解决方法(0)

自定义元素 getRootNode.closest() 函数跨越多个(父)shadowDOM 边界

我花了一些时间进行搜索,但只看到太多常规的“遍历 DOM”博客或仅提升一个级别的答案getRootnode()

伪代码:

HTML

<element-x>
//# shadow-root
    <element-y>
        <element-z>
        //# shadow-root
        let container = this.closest('element-x');
        </element-z>
    </element-y>
</element-x>
Run Code Online (Sandbox Code Playgroud)

标准element.closest()功能并没有捅破阴影边界;

所以this.closest('element-x')返回null因为没有 <element-x><element-z>shadowDom

目标:

<element-x>从后代内部查找<element z>(任何嵌套级别)

必需的:

A(递归).closest()函数,走了(阴影)DOM小号和认定<element-x>

注意:元素可能有也可能没有 ShadowDOM(参见<element y>:仅 lightDOM)

我可以而且明天会自己做;只是想知道是否有聪明的头脑已经做到了。

资源:

更新

这是以下答案中的未缩小代码:

        closestElement(selector, base = this) {
            function __closestFrom(el) {
                if (!el || el === document || el === window) return …
Run Code Online (Sandbox Code Playgroud)

javascript shadow-dom custom-element native-web-component

7
推荐指数
3
解决办法
1816
查看次数

如何使用Shadow DOM v1从阴影根目录中访问主机元素?

给定阴影根中包含的元素,如何获取承载所述阴影根的元素?有没有一种方法可以实现这一点,无论元素在树中的位置(即给定引用element2或者element3,获取引用element1)?

element1
? #shadow-root
  ? element2
    ? element3
Run Code Online (Sandbox Code Playgroud)

html javascript web-component shadow-dom

4
推荐指数
1
解决办法
837
查看次数