问题执行脚本权限



我正在尝试从后台脚本将一些代码注入到选定的选项卡上下文中,但我在权限方面遇到了一些问题。

manifest.json

{
"manifest_version": 2,
"name": "prova",
"version": "1.0",
"permissions": [
"activeTab"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"content_scripts": [
{
"matches": ["https://*"],
"css": ["mystyles.css"],
"js": ["myscript.js"]
}
]
}

背景.js

chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
chrome.tabs.executeScript(null,{code:"console.log('Not done!');"});
sendResponse({});
});

我的脚本.js

chrome.runtime.sendMessage({}, function(response) {
console.log("Done!");
});

这是后台控制台中出现的错误:

未选中的运行时。上次运行选项卡时出错。执行脚本:无法 访问页面的内容。扩展清单必须请求 访问相应主机的权限。

我真的很感谢每一个建议。 谢谢吨。

从程序化注入部分:

若要将代码插入页面,扩展必须具有页面的跨源权限。它还必须能够使用 chrome.tabs 模块。您可以使用清单文件的权限字段获取这两种权限。

这意味着您需要为要运行代码的主机申请许可证。 因此,manifest.json中的permissions部分应如下所示:

"permissions": [
"tabs",
"http://*.example.com/",
]

查看主机匹配模式。

编辑 1:

我还注意到您使用content-scriptprogrammatic injection.这两种在选项卡中运行代码的方法几乎可以完成相同的工作,但方式不同。

  1. 清单中的content_script部分有助于在与主机模式匹配的每个页面上运行脚本。
  2. 编程注入 (PI( 还有助于运行代码(文件或字符串(。但主机权限应通过清单中的第permissions节进行设置。PI 在脚本需要很少运行时使用,而不是在每个页面上运行。

相关内容

  • 没有找到相关文章

最新更新