有没有办法,如何强制突变观察者忽略回调函数引起的 DOM 变化?
现在我有:
var config = { attributes: true, childList: true, characterData: true };
var target = document.body;
var timer;
// create an observer instance
var observer = new MutationObserver(function(mutations) {
// fired when a mutation occurs
timer = setTimeout(function () {
_3rd_party_callback();
}, 500);
});
observer.observe(target, config);
问题是, _3rd_party_callback
回调导致 DOM 变化,所以它永远不会停止。顾名思义,它是第三方功能,我无法更改(实际上它的 DOM 操作是它的目的)。
所以我所做的是分别在回调中调用函数之前和之后断开并启动观察者。
observer.disconnect()
_3rd_party_callback();
observer.observe(target, config);
它似乎有效,但我担心,由于事件的异步处理,当其他人进行更改并错过它们时,我可能会禁用观察者。
不太可能有办法将更改与页面本身和回调分开,但我会试一试。