google-chrome-extension - MutationObserver 在(与谷歌相关的?)网站上的奇怪行为
问题描述
我正在开发一个 Chrome 扩展,它使用 MutationObserver 的回调来触发内容脚本中的 cookie 同意和其他烦人的东西删除过程:
start();
function start() {
console.log('start');
scanner.observer = new MutationObserver(function(mutations) {
console.log('MutationObserver callback', mutations);
scanner.run();
}),
scanner.observer.observe(document.documentElement, {
attributes: true, characterData: false, childList: true, subtree: true, attributeOldValue: false, characterDataOldValue: false }
);}
}
start()
直接在内容脚本中调用,或者每次单击扩展弹出窗口中的按钮时调用。它适用于除一些谷歌相关网站之外的每个网站。例如,在正常模式下在 google.com 上搜索某些内容时,它可以工作并在控制台中输出正确的登录信息,但在隐身模式下,我只能start
在浏览器的控制台中获得。developer.chrome.com 在正常模式和隐身模式下也是如此。
接下来的事情是在 chrome.webstore.com (或 chrome://extensions 内页,这并不奇怪)我什至没有得到start
顺便提一句。它适用于 translate.google.com 或 keep.google.com 等。
从未在文档中看到过提及它。这种行为有什么解释吗?
更新:不确定它是否与谷歌有关。我还注意到有时它不会在 stackowerflow.com 或 stackexchange.com 上触发。有时它会在页面加载后 10-20 秒后触发(当一些额外的资源、图像等完成加载并更新 DOM 时)
如果好奇:https ://chrome.google.com/webstore/detail/provision/napdgmfnfbebjgahggnalabkkfaajldf
解决方案
推荐阅读
- java - 如何将套接字数据从 Android 设备发送到通过 Android 的热点 (AP) 连接的 PC
- javascript - NodeJS - 填补缺失的日期
- python - python包ggtools无法导入ggtools.gg
- javascript - 如何快速将剪贴板的内容粘贴到 Chrome 开发控制台中的变量中?
- listview - Firemonkey Listview 动态外观图片 LoadFromFile
- cakephp - Cakephp 4.0 中的validationDefault 声明
- migration - 是否可以编写一个删除一列的 Sqitch 更改,而不会使 sqitch verify 永远失败?
- java - 从 JSON 字符串中删除元素
- python-3.x - 使用动态整数进行循环分页
- javascript - 几秒钟后手风琴项目消失