gpt4 book ai didi

javascript - 发出 executeScript 权限

转载 作者:行者123 更新时间:2023-11-29 16:41:09 25 4
gpt4 key购买 nike

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

list .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"]
}
]
}

background.js

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

myscript.js

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

就是后台控制台出现的错误:

Unchecked runtime.lastError while running tabs.executeScript: Cannot access contents of the page. Extension manifest must request permission to access the respective host.

我非常感谢每一个建议。非常感谢。

最佳答案

来自 Programmatic injection部分:

To insert code into a page, your extension must have cross-origin permissions for the page. It also must be able to use the chrome.tabs module. You can get both kinds of permission using the manifest file's permissions field.

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

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

看看host match patterns .

编辑 1:

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

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

关于javascript - 发出 executeScript 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45630750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com