У меня есть расширение браузера для Календаря Google, где я наблюдаю за DOM для сбора событий, которые просматриваются с помощью:
// content.js
const calendarContainer = document.getElementById('gridcontainer');
const observer = new MutationObserver(mutations => {
// just for test
console.log('content', mutations);
}
observer.observe(calendarContainer, {
childList: true,
characterData: true,
subtree: true
});
Он корректно работает в "классическом" календаре, но с момента последнего обновления Material Design структура DOM отличается. Итак, я попытался соответствующим образом изменить наблюдаемый элемент:
// content.js
const calendarContainer = document.querySelector('div[role="main"]');
Несмотря на то, что я переключаюсь между просмотром недели/дня, расписанием или между датами, я не могу получать никаких новых мутаций, кроме первой загрузки страницы (после обновления). Если вы посмотрите на исходный код через Developer Tools, вы увидите, что DOM меняется, но Observer каким-то образом его не видит.
Какие-нибудь мысли?
Согласно комментарию wOxxOm, я изменил его, чтобы наблюдать за parentElement, который не заменяется между разными вызовами, и он работает.
#mainbody