标签:javascript dom mutation-observers
我在目标节点上使用变异观察器.如果任何子节点或属性发生更改,它将触发.但我有一个案例,我必须处理目标节点本身被删除.这不起作用.有办法处理这个吗?
解决方法:
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。