首页 > 解决方案 > 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

标签: google-chrome-extensioncontent-scriptmutation-observerschrome-web-store

解决方案


推荐阅读