我正在制作“ psuedo”,“ super”形式(如自定义元素)。我想遍历节点以查找符合特定条件的节点(一个是它们具有名为function
的方法validate
,另一个是它们具有属性name
和value
)。我想遍历
似乎有两种可能的方法。
Node.hasChildNodes()
和Node.childNodes
之类的调用一起使用但是,我找不到有关这两种可能性的文档,它们无法解释插槽内容的处理方式。这些文档通常会忽略任何关于插槽和插槽内容的提及-可能是因为它们是在插槽成为规范的一部分之前编写的。
在遍历shadowRoot时,显然可以使用Slot.assignedNodes()
方法来查找插槽中的内容(尽管有关此文档的内容在可选flatten
值的含义上是模棱两可的-说它设置为true时会返回默认内容,但是如果将值设置为false时没有提供实际的插槽,它会返回默认内容吗?-为什么它仍被称为“ flatten”,似乎不适合它吗?)。但是,如果我使用这种方法,那么我还需要一种避免在遍历子级时已移至这些插槽的节点的方法
那么,形成上述行为的最佳方法是怎样的人可以给我一些线索?
答案 0 :(得分:0)
我最终发现最好的方法是手动操作。测试的症结在于,将元素分配给插槽时node.assignedSlot
不为null,因此在扫描子项时可以使用它来忽略将子项分配给插槽时的子项(并在扫描{{时包括它们1}}
这是一个带有slot.assignedNodes()
默认功能的模块,用于遍历提供的元素。 walk
是每个节点的回调函数,调用方可以使用它来检查节点是否符合所寻找的条件(请参阅问题),因此不扫描子级。
criteria