我有一个<my-el>
结构类似于此的自定义元素(纯静态的、服务器渲染的 HTML):
<my-el>
<div>a</div>
<div>b</div>
<div>c</div>
<div>d</div>
</my-el>
由于 Chrome 不保证connectedCallback
自定义元素中的子元素可用性,我正在使用HTMLParsedElement
它,它基本上使用以下步骤延迟自定义元素初始化:
- 测试元素(或任何祖先元素)是否具有
nextSibling
(在这种情况下,解析器可能已经通过my-el
),或者是否DOMContentLoaded
已经到达(又名document.readyState !== 'loading'
)。 - 如果以上都不是,设置一个
MutationObserver
就childList
重新检查以上条件。
目前概述的策略仍然存在的问题是,MutationObserver
当这是可用的 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 完全可用,包括它的所有后代节点?