Я хотел использовать MutationObservers для прослушивания добавления определенного класса (step_active) к элементам с классом (step), однако, похоже, это не срабатывает совсем, как ожидалось.
Если я добавлюкласс напрямую через element.classList.add () мое событие запускается.Однако, когда сайт выдает эти изменения, класс сам меняется - мои события не запускаются.
Почему это так?
Вот общий формат моего текущего кода:
var target = document.querySelectorAll(".step");
for (var i = 0; i < target.length; i++) {
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
var trigger = mutation.target;
if(trigger.classList.contains('step_active')){
window.dataLayer.push({
event: 'Step: ' + mutation.id
});
}
})
});
var config = {attributes: true, childList: true, subtree: true};
observer.observe(target[i], config);
};
Я ожидал, что это вызовет уникальное событие с mutation.id, когда я продвигаюсь по шагам на странице - однако это не так.Вместо этого выполнение чего-то подобного приводит к ожидаемому событию:
setTimeout(function(){
target[0].classList.add('step_active');
}, 1000);
Может ли кто-нибудь пролить свет на то, что я упускаю / неправильно понял здесь?