代码之家  ›  专栏  ›  技术社区  ›  connexo

当一个突变观察者用单个元素对子列表进行更改时,假设元素被完全解析是安全的吗?

  •  4
  • connexo  · 技术社区  · 6 年前

    我有一个自定义元素 <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 基本上使用以下步骤延迟自定义元素初始化:

    1. 测试元素(或任何祖先元素)是否具有 nextSibling (在这种情况下,解析器可以通过 my-el ),或者如果 DOMContentLoaded 已经到达(也就是说。 document.readyState !== 'loading' )中。
    2. 如果以上都没有,请设置 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是完全可用的,包括它的所有子节点吗?

    0 回复  |  直到 6 年前