5

我有一个<my-el>结构类似于此的自定义元素(纯静态的、服务器渲染的 HTML):

<my-el>
  <div>a</div>
  <div>b</div>
  <div>c</div>
  <div>d</div>
</my-el>

由于 Chrome 不保证connectedCallback自定义元素中的子元素可用性,我正在使用HTMLParsedElement它,它基本上使用以下步骤延迟自定义元素初始化:

  1. 测试元素(或任何祖先元素)是否具有nextSibling(在这种情况下,解析器可能已经通过my-el),或者是否DOMContentLoaded已经到达(又名document.readyState !== 'loading')。
  2. 如果以上都不是,设置一个MutationObserverchildList重新检查以上条件。

目前概述的策略仍然存在的问题是,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 完全可用,包括它的所有后代节点?

4

0 回答 0