我在manifest.json中有以下权限:
"permissions": [
"*//*/*",
"http://*/",
"https://*/",
"activeTab",
"tabs",
"storage",
"bookmarks"
]
我仍然不能从背景页面executeScript
,但不知何故它从弹出页面工作。我收到以下错误:
运行tabs.executeScript时未经检查的runtime.lastError:无法访问URL“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中做到这一点时,它工作正常。
正如您已经发现*//*/*
是一个无效的跨源许可。请改用这样的东西。
"permissions": [
"https://*/*",
"http://*/*",
"tabs"
]
或提供较窄的权限范围。
"permissions": [
"https://*/*",
"http://*/*",
"activeTab"
]
有关程序化注射的进一步阅读:https://developer.chrome.com/extensions/content_scripts#pi
请不要加载远程文件,请下载项目中的相关文件然后尝试执行它。
执行此操作后仍然无法正常工作请在manifest.json中的web_accessible_resources属性中添加文件引用以获取更多参考https://developer.chrome.com/extensions/manifest/web_accessible_resources
谢谢你的其他答案。但它们似乎不起作用。
我试图提供相当多的许可,并且我多次阅读程序化注入页面,但仍然无法获得后台页面来执行代码。
最后我放弃了,转向内容脚本,无痛苦地工作。现在我从内容脚本打开一个端口,并与后台页面进行通信,为内容脚本准备必要的信息。
以防万一其他人在挣扎,content scripts似乎是你的救援。