代码可以在Chrome控制台中正常运行,但不能在Chrome扩展程序中运行

时间:2018-08-07 15:53:56

标签: javascript google-chrome-extension google-chrome-devtools

我正在启动一个Chrome扩展程序,以隐藏和修改网站页面上的某些内容。

目前的代码非常简单:

manifest.json

{
"name":"External",
"description":"Adapted content",
"version":"1",
"manifest_version":2,
"content_scripts": [
    {
      "matches": ["https://www.mywebsite.com/*"],
      "run_at": "document_idle",
      "all_frames": true,
      "js": ["test_chrome.js"]
    }
  ]
}

还有我的JS:

test_chrome.js

element = document.querySelector('div.bidder');
element.remove();

当我加载页面时,div仍然在这里,但是当我在Chrome控制台中输入两行JS时,就可以按照我的意愿删除div。

加载页面时,我在控制台中收到以下错误:

未捕获到的TypeError:无法在test_chrome.js:2处读取null的属性“删除”

(匿名)@ test_chrome.js:2

我实际上设法删除带有扩展名的页面的页眉或包装器,但是我无法删除带有扩展名的任何其他div(尽管它在控制台中有效)。 我已经尝试过更改run_at属性,但是没有使我的代码正常工作。

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

为什么不尝试类似的东西:

let x = setInterval(()=>{ 
element = document.querySelector('div.bidder');
 if (element) {
  element.remove()
  clearInterval(x);
 }
}, 3000);

并从头开始运行,而不是结束或空闲。