ミューテーションオブザーバーにコールバック関数による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);
動作しているように見えますが、イベントの非同期処理のおかげで、他の変更が行われてそれらを見逃すと、オブザーバーが無効になる可能性があります。
ページ自体とコールバックから変更を分離する方法があるとは考えにくいですが、試してみます。