Эй, все равно, чтобы подключить 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>
Следите за состоянием наблюдателя в другой переменной (например, isObserving
). Установите эту переменную в true
в вашей функции obs()
, установите ее в false
в dis()
и вызовите toggleObs()
с помощью вашей кнопки.
function toggleObs() {
if(isObserving) {
dis();
} else {
obs();
}
}
нет никакой собственности на наблюдаемые, которые скажут вам, наблюдаете вы или нет. По этой причине вам нужно следить за собой. См. Пример https://stackblitz.com/edit/js-dw5jmr
let isObserving = false;
window.toggleObserve = function() {
isObserving = !isObserving;
isObserving ? window.obs() : window.dis();
}