con*_*exo 5 javascript dom mutation-observers custom-element native-web-component
我有一个<my-el>结构与此类似的自定义元素(纯静态的、服务器呈现的 HTML):
<my-el>
<div>a</div>
<div>b</div>
<div>c</div>
<div>d</div>
</my-el>
Run Code Online (Sandbox Code Playgroud)
由于 Chrome 不保证connectedCallback自定义元素的子元素可用性,我使用HTMLParsedElement它基本上使用以下步骤延迟自定义元素初始化:
nextSibling(在这种情况下解析器可能已经通过my-el),或者是否DOMContentLoaded已经到达(又名document.readyState !== 'loading')。MutationObserver就childList重新检查以上条件。概述的策略目前仍然存在的问题是,MutationObserver当这是可用的 HTML 时,可能会被触发:
<my-el>
<div>a</div>
<div>b</div>
</my-el>
Run Code Online (Sandbox Code Playgroud)
甚至这个
<my-el>
<div>a</div>
</my-el>
Run Code Online (Sandbox Code Playgroud)
在这些情况下, MutationObserver 会被多次触发,并且处理程序无法知道</my-el>实际何时到达结束。
问题:有谁知道div像这样包装所有内部元素是否可以解决这个问题:
<my-el>
<div>
<div>a</div>
<div>b</div>
<div>c</div>
<div>d</div>
</div>
</my-el>
Run Code Online (Sandbox Code Playgroud)
或者换句话说,当变异观察者为这个结构触发时,我能否可靠地假设包装子 div 完全可用,包括它的所有后代节点?