如何递归地在 shadow DOM 中导航

How to navigate accross shadow DOMs recursively

我想验证自定义聚合物元素。为此,我想在 javascript 中访问我所有的嵌套聚合物元素以查看它们是否有效。 我找不到一个简单的方法来做到这一点。 this.querySelectorAll 找不到嵌套在其他聚合物元素中的我的输入。看来我不能在这些选择器中使用“/deep/”。 是否有捷径可寻 ?或者我是否必须执行递归 javascript 方法,该方法将在所有具有影子根的元素中调用 querySelectorAll ? (我猜表演会变得丑陋...)

感谢您的帮助。 如果没有快速解决方案,我可能会尝试其他方法(让我的输入注册到父级)

答案:

element.querySelectorAll() 会在使用 /deep/ 时找到一些元素,但是,它只能到此为止(1 个阴影 dom 级别)。这确实需要来自每个 ElementNode 的递归调用。

注:

这种行为在很大程度上违背了 HTML 的核心原则(即无论内容的格式如何,网页都能正常工作)。换句话说,所有元素无论放置在什么位置都是有效的。

例如,我制作了一个自定义元素,它只呈现特定的子元素并隐藏所有其他元素。这仍然符合上述原则,因为元素的基本呈现由 element/agent 控制,但允许 developer/designer 在标准呈现之外自定义其呈现。