4

ミューテーションオブザーバーにコールバック関数による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);

動作しているように見えますが、イベントの非同期処理のおかげで、他の変更が行われてそれらを見逃すと、オブザーバーが無効になる可能性があります。

ページ自体とコールバックから変更を分離する方法があるとは考えにくいですが、試してみます。

4

1 に答える 1