отключить и заново подключить MutationObserver с помощью кнопки

1

Эй, все равно, чтобы подключить MutationObserver, а затем отключить его с помощью той же кнопки, я знаю, как отключить и подключить его, но я хотел бы сделать это только одной кнопкой, как я могу это сделать? извините мой плохой английский

var target = document.getElementsByClassName('message')[0];

var observer = new MutationObserver(function(mutations) {
  mutations.forEach(function(mutation) {
    console.info("EVENT TRIGGERT ");
  });
});

var config = {
  attributes: true,
  childList: true,
  characterData: true
};

function dis() {
observer.disconnect();
}
function obs() {
observer.observe(target, config);
}

// simulate change
refreshIntervalId = setInterval(function() {
  document.getElementsByClassName('message')[0].innerHTML = Math.random().toString(36).substring(2, 15);
}, 1000);
//
<button onclick="obs();">observe</button>
<button onclick="dis();">disconnect</button>

<div class="message"></div>
Теги:

2 ответа

0

Следите за состоянием наблюдателя в другой переменной (например, isObserving). Установите эту переменную в true в вашей функции obs(), установите ее в false в dis() и вызовите toggleObs() с помощью вашей кнопки.

function toggleObs() {
  if(isObserving) {
    dis();
  } else {
    obs();
  }
}
0

нет никакой собственности на наблюдаемые, которые скажут вам, наблюдаете вы или нет. По этой причине вам нужно следить за собой. См. Пример https://stackblitz.com/edit/js-dw5jmr

let isObserving = false;
window.toggleObserve = function() {
  isObserving = !isObserving;
  isObserving ? window.obs() : window.dis();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню