编程语言
首页 > 编程语言> > 我希望变异观察者监听它的目标节点本身是否在javascript中删除

我希望变异观察者监听它的目标节点本身是否在javascript中删除

作者:互联网

我在目标节点上使用变异观察器.如果任何子节点或属性发生更改,它将触发.但我有一个案例,我必须处理目标节点本身被删除.这不起作用.有办法处理这个吗?

解决方法:

MutationObservers可以监视3件事:

>属性更改
>文本内容更改
>子列表更改

然后可选地,这些更改事件可以冒泡,因此如果您想要更改目标和所有目标的子项,则可以执行此操作.

这意味着通过聆听目标无法实现您的目标.您需要将一个观察者附加到目标的父节点,并侦听删除要跟踪的节点的父级的子列表更改.

例如而不是你希望的那个假例子

var observer = new MutationObserver(callback);
observer(target, {
  // Fake non-existent option
  parent: true
});

你做

var observer = new MutationObserver(function(mutations){
   var targetRemoved = mutations.some(function(mutation){
     return mutation.removedNodes.indexOf(target) !== -1;
   });

   if (targetRemoved) callback();
});
observer(target.parentNode, {
  childList: true
});

标签:javascript,dom,mutation-observers
来源: https://codeday.me/bug/20190702/1353695.html