我花了一些时间进行搜索,但只看到太多常规的“遍历 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) 给定阴影根中包含的元素,如何获取承载所述阴影根的元素?有没有一种方法可以实现这一点,无论元素在树中的位置(即给定引用element2或者element3,获取引用element1)?
element1
? #shadow-root
? element2
? element3
Run Code Online (Sandbox Code Playgroud)