如何使用 MutationObservers 来查找元素的 parent 何时从 DOM 中移除?

How can MutationObservers be used to find when an element's parent is removed from the DOM?

我的应用程序有一些 MutationObservers 附加到 DOM 树中较低的 DOM 元素。他们需要检测他们的任何一位祖先何时从 DOM.

中移除

使用 MutationObservers 检测特定元素或其任何 children 是否被删除很简单。但是,确定是否有任何元素 parent 被删除的最佳方法是什么?

Here is a plunker 说明了这个问题。在 plunker 中,请注意当您单击 "Remove Parent" 时,将调用 parent 元素的变异观察器。但是,child 元素的观察者不是。

我如何有效地使用 MutationObservers 检查节点何时从文档中删除?


编辑

我的用例是我实现了一些 Web 组件,当它们(或它们的 parent 之一)从 DOM 中删除时需要调用清理代码。我希望封装每个 Web 组件,以便它处理自己的清理并且没有全局注册表(本机 window.customElements 除外)。

当您从头开始实施 Web 组件时,您应该使用本机 lifecycle callbacks。在您的情况下,disconnectedCallback 将触发组件内的清理代码。