chrome.tabs.executeScript无法正常工作?

Gad*_*i A 19 google-chrome-extension

我正在尝试学习使用chrome.tabs.executeScript推荐.我已经使用浏览器操作创建了一个简单的扩展.我的background.html文件目前看起来像这样:

<html>
<script>
    chrome.browserAction.onClicked.addListener(function(tab) {
        chrome.tabs.executeScript(null,{code:"document.body.bgColor='red'"});
        chrome.tabs.executeScript(null, {file: "content_script.js"});
    });
</script>
</html>
Run Code Online (Sandbox Code Playgroud)

"content_script.js"文件包含document.body.bgColor ='red'.

按下浏览器操作按钮时没有任何反应.显然我错过了一些非常基本的东西.

我已经检查过console.log,当按下浏览器操作时,确实控制到达chrome.tabs.executeScript调用.否则我不确定如何检查我的内容脚本的代码是否运行(似乎没有;我在内容脚本中放入的console.log没有效果,但即使脚本运行成功,它也可能没有效果).

ser*_*erg 38

确保清单中有域和标签权限:

"permissions": [
    "tabs", "http://*/*", "https://*/*"
]
Run Code Online (Sandbox Code Playgroud)

然后改变车身颜色试试:

chrome.tabs.executeScript(null,{code:"document.body.style.backgroundColor='red'"});
Run Code Online (Sandbox Code Playgroud)

另请注意,内容脚本不会注入任何chrome://或扩展库页面.

  • 对我来说,`<all_urls>`工作了.不需要`tabs`. (6认同)
  • 仅供参考,您可以使用`*://*/*`代替`http://*/*`和`https://*/*`来设置所有网址的权限 (4认同)

Abd*_*bdo 11

对于那些仍有问题的人,您需要确保在Chrome中重新加载扩展程序的权限.

转到chrome://extensions,滚动到您的扩展程序,然后单击"重新加载".单击扩展程序旁边的权限链接,确保您的权限已更新.


kof*_*fus 5

您实际上不需要也不想要 executeScript 的“tabs”权限。

"permissions": [
  "http://*/*", 
  "https://*/*"
]
Run Code Online (Sandbox Code Playgroud)

应该够了