我使用chrome.tabs.create()
生成一个新标签,该标签转到Chrome扩展程序中的一个页面。
然后,我想使用chrome.tabs.executeScript()
将JavaScript文件注入新选项卡(enter_content.js)。但是,当我这样做时,我遇到了错误
tabs.executeScript期间出错:无法访问url的内容 "铬 - 延伸://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"
}
]
}
我需要添加什么才能将代码注入选项卡?
// UPDATE
为了澄清,我有一个上下文菜单,当点击它时会打开一个新选项卡并将其指向本地文件enter.html
。页面只包含一个输入框和一个按钮。单击时,按钮应使用chrome.extension.sendMessage()
将输入框中的内容发送回后台脚本。但是看起来你不能将扩展中的脚本注入到页面中(这将允许它进行通信)也不能直接通过内联或单独的js文件包含enter.html
代码中chrome命名空间内的任何内容因为这违反了默认的CSP,如果可能,我希望保持原样。
我尝试稍微编辑CSP但没有任何影响。我添加了"content_security_policy": "script-src 'self' chrome-extension://adcfbbpepclgchodmdfbijpjhkgcamcg/; object-src 'self'"
以及最后添加特定页面。
我实际上没有任何完整的书面页面,因为它没有任何作用,所以我无法测试在消息传递方面有效的方法。
答案 0 :(得分:0)
chrome-extension://adcfbbpepclgchodmdfbijpjhkgcamcg/*
是无效模式,文档未在此更新。chrome.extension.getBackgroundPage()
。* API,CSP错误是导致此问题的原因。enter_content.js
添加到打开的页面使用的脚本列表中,而不是无效注入。答案 1 :(得分:0)
我通过使用addEventListener()
附加到按钮上来解决这个问题,以免妨碍默认的CSP。