我在manifest.json中拥有以下权限:
"permissions": [
"*//*/*",
"http://*/",
"https://*/",
"activeTab",
"tabs",
"storage",
"bookmarks"
]
我仍然不能从后台页面executeScript
,但不知何故它可以从弹出页面工作。我收到以下错误:
运行tabs.executeScript时未经检查的runtime.lastError:无法访问网址“https://github.com/NeilLi1992/LightMarker/blob/master/js/background.js”的内容。扩展清单必须请求访问此主机的权限。 在chrome-extension://aciimkfhggbanpmpngahlofjocidjfko/src/js/background.js:152:29
我尝试在权限部分对https://github.com/
进行硬编码,但仍无效。
我在后台页面的DevTools中测试了这段代码:
chrome.tabs.executeScript(728, { code: "alert(123);" });
728就是我在创建选项卡时记录的tabId,因此它是有效的。
我从后台devtools得到了上述错误。但是当我从popup的devtools中做到这一点时,它工作正常。
答案 0 :(得分:1)
这将起作用:
修改manifest.json
"permissions": [
"*://*/_generated_background_page.html"
]
答案 1 :(得分:0)
正如您已经发现*//*/*
是一个无效的跨域权限。请改用这样的东西。
"permissions": [
"https://*/*",
"http://*/*",
"tabs"
]
或提供更窄范围的权限。
"permissions": [
"https://*/*",
"http://*/*",
"activeTab"
]
有关程序化注射的进一步阅读:https://developer.chrome.com/extensions/content_scripts#pi
答案 2 :(得分:0)
请不要加载远程文件,请下载项目中的相关文件,然后尝试执行。
执行此操作后仍然无效,请在manifest.json中的web_accessible_resources属性中添加文件引用,以获取更多参考https://developer.chrome.com/extensions/manifest/web_accessible_resources
答案 3 :(得分:0)
感谢您的其他答案。但它们似乎不起作用。
我试图提供相当多的许可,我多次阅读程序化注入页面,但仍然无法获得执行代码的后台页面。
最后我放弃了并转向内容脚本,这些脚本无痛苦地工作。现在我从内容脚本中打开一个端口,并与后台页面进行通信,为内容脚本准备必要的信息。
万一其他人在挣扎,content scripts似乎是你的救援。