Javascript 侦听DOM事件(特定属性)

Javascript 侦听DOM事件(特定属性),javascript,google-chrome-extension,mutation-observers,Javascript,Google Chrome Extension,Mutation Observers,我需要在添加特定属性时获取数据。 我读过这篇文章: 这种方法有一个问题,因为有太多的事件,并且扩展非常慢,是否有一个选项可以根据特定属性过滤突变 在mutationobserver init选项中使用attributeFilter。将其设置为要侦听的属性数组,如下所示: var attributeSpecificObserver=new MutationObserver(function_you_want_observing); attributeSpecificObserver.observe

我需要在添加特定属性时获取数据。 我读过这篇文章:


这种方法有一个问题,因为有太多的事件,并且扩展非常慢,是否有一个选项可以根据特定属性过滤突变

在mutationobserver init选项中使用
attributeFilter
。将其设置为要侦听的属性数组,如下所示:

var attributeSpecificObserver=new MutationObserver(function_you_want_observing);
attributeSpecificObserver.observe( element_you_want_to_observe, {
    attributes: true,
    attributeFilter: ['id', 'class', 'style', 'etc'],
} );

来源:。

这是限制属性观察的唯一方法,可能重复。要有创意。不要观察整个文档,例如在父容器上进行观察。也不要在突变观察者中使用jQuery和其他monster包装器,切换到直接DOM访问:
for(var i=0;…){var post=translations[i].target.getElementsByClassName('ContentWrapper')[0];…}
或者,如果您可以观察添加节点的直接父元素(然后附加另一个观察者以观察每个添加节点上的属性),那么您就不需要
subtree:true,
,因此即使使用jQuery,您的观察者也会非常快。@wOxxOm感谢您,特别是您提出不要使用jQuery!显然,如果你不想只听几个属性,你必须手动过滤掉它们?
var attributeSpecificObserver=new MutationObserver(function_you_want_observing);
attributeSpecificObserver.observe( element_you_want_to_observe, {
    attributes: true,
    attributeFilter: ['id', 'class', 'style', 'etc'],
} );