如何递归地在 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 在标准呈现之外自定义其呈现。
我想验证自定义聚合物元素。为此,我想在 javascript 中访问我所有的嵌套聚合物元素以查看它们是否有效。 我找不到一个简单的方法来做到这一点。 this.querySelectorAll 找不到嵌套在其他聚合物元素中的我的输入。看来我不能在这些选择器中使用“/deep/”。 是否有捷径可寻 ?或者我是否必须执行递归 javascript 方法,该方法将在所有具有影子根的元素中调用 querySelectorAll ? (我猜表演会变得丑陋...)
感谢您的帮助。 如果没有快速解决方案,我可能会尝试其他方法(让我的输入注册到父级)
答案:
element.querySelectorAll()
会在使用 /deep/
时找到一些元素,但是,它只能到此为止(1 个阴影 dom 级别)。这确实需要来自每个 ElementNode
的递归调用。
注:
这种行为在很大程度上违背了 HTML 的核心原则(即无论内容的格式如何,网页都能正常工作)。换句话说,所有元素无论放置在什么位置都是有效的。
例如,我制作了一个自定义元素,它只呈现特定的子元素并隐藏所有其他元素。这仍然符合上述原则,因为元素的基本呈现由 element/agent 控制,但允许 developer/designer 在标准呈现之外自定义其呈现。