"new" Google 日历中的 MutationObserver
MutationObserver in "new" Google Calendar
我有一个 browser extension 用于 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
});
它在 "classic" 日历中工作正常,但自上次更新 Material 设计以来,DOM 结构有所不同。因此,我尝试相应地更改观察到的元素:
// content.js
const calendarContainer = document.querySelector('div[role="main"]');
即使我在 week/day 视图、日程表或日期之间切换,除了第一次加载页面(刷新后)之外,我无法收到任何新的变化。如果您通过 Developer Tools 查看源代码,您可以看到 DOM 正在发生变化,但 Observer 不知何故无法看到它。
有什么想法吗?
根据 wOxxOm 评论,我已更改它以观察 parentElement,它不会在不同的调用之间被替换,并且它正在工作。
我有一个 browser extension 用于 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
});
它在 "classic" 日历中工作正常,但自上次更新 Material 设计以来,DOM 结构有所不同。因此,我尝试相应地更改观察到的元素:
// content.js
const calendarContainer = document.querySelector('div[role="main"]');
即使我在 week/day 视图、日程表或日期之间切换,除了第一次加载页面(刷新后)之外,我无法收到任何新的变化。如果您通过 Developer Tools 查看源代码,您可以看到 DOM 正在发生变化,但 Observer 不知何故无法看到它。
有什么想法吗?
根据 wOxxOm 评论,我已更改它以观察 parentElement,它不会在不同的调用之间被替换,并且它正在工作。