我的应用程序有一些附加到DOM树中底部的元素上的MutationObservers。它们需要检测任何一个祖先从DOM中移除的情况。
使用MutationObservers检测特定元素或其任何子元素是否被删除非常简单。但是,如何确定任何一个元素的父元素是否被删除呢?
这里有一个plunker演示了这个问题。在plunker中,注意当您点击“删除父元素”时,将调用父元素的变异观察器。然而,子元素的观察器却没有被调用。
我该如何高效地使用MutationObservers来检查节点何时从文档中删除?
编辑
我的使用情况是,我实现了一些Web组件,需要在它们(或它们的某个父级)从DOM中删除时调用清理代码。我希望每个Web组件都是封装的,以便处理自己的清理,并且没有全局注册表(除了本机window.customElements
)。
elementBeingRemoved.contains(child)
来测试子元素是否受到影响。 - Barmar