我使用该选项卡生成一个新选项chrome.tabs.create()
卡,转到 chrome 扩展中的页面。然后我想使用chrome.tabs.executeScript()
将 JavaScript 文件注入新选项卡 (enter_content.js)。但是,当我这样做时,我会遇到错误
tabs.executeScript 期间出错:无法访问 url“chrome-extension://adcfbbpepclgchodmdfbijpjhkgcamcg/enter.html”的内容。扩展清单必须请求访问此主机的权限。
我的清单看起来像这样
{
"manifest_version": 2,
"name": "myExtension",
"version": "1.0",
"permissions": [
"contextMenus",
"tabs",
"*://*/*"
],
"background": {
"scripts": ["background.js"]
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["generic_content.js"],
"all_frames": true,
"run_at": "document_start"
}
]
}
我需要添加什么才能将代码注入选项卡?
//更新
为了澄清,我有一个上下文菜单,单击它会打开一个新选项卡并将其指向本地文件enter.html
。该页面仅由一个输入框和一个按钮组成。单击按钮时,应使用 .将输入框中的内容发送回后台脚本chrome.extension.sendMessage()
。但是您似乎无法将扩展程序中的脚本注入页面(这将允许它进行通信),也不能直接通过内联或单独的 js 文件在enter.html
代码中的 chrome 命名空间中包含任何内容,因为这违反了默认 CSP,如果可能的话,我想保持原样。
我尝试稍微编辑 CSP,但没有任何效果。我"content_security_policy": "script-src 'self' chrome-extension://adcfbbpepclgchodmdfbijpjhkgcamcg/; object-src 'self'"
在最后添加并添加了特定页面。
我实际上没有任何完整编写的页面,因为它们都不起作用,所以我无法测试在消息传递方面什么是有效的。