我有一个自定义元素
<my-el>
在结构上与此类似(纯静态,服务器呈现的HTML):
<my-el>
<div>a</div>
<div>b</div>
<div>c</div>
<div>d</div>
</my-el>
Since Chrome does not guarantee child element availability in the
connectedCallback
of custom elements
,我正在使用
HTMLParsedElement
基本上使用以下步骤延迟自定义元素初始化:
-
测试元素(或任何祖先元素)是否具有
nextSibling
(在这种情况下,解析器可以通过
my-el
),或者如果
DOMContentLoaded
已经到达(也就是说。
document.readyState !== 'loading'
)中。
-
如果以上都没有,请设置
MutationObserver
上
childList
重新检查上述条件。
目前,该战略仍存在的问题是
突变观测器
当这是可用的HTML时,可能会被解雇:
<my-el>
<div>a</div>
<div>b</div>
</my-el>
甚至这个
<my-el>
<div>a</div>
</my-el>
在这些情况下,mutationobserver会被多次触发,而处理程序无法知道
</my-el>
实际上已经到达了。
问题:
有人知道是否把所有的内部
div
这样的元素可以解决这个问题:
<my-el>
<div>
<div>a</div>
<div>b</div>
<div>c</div>
<div>d</div>
</div>
</my-el>
或者换句话说,当突变观察者触发这个结构时,我能可靠地假设包装子div是完全可用的,包括它的所有子节点吗?