【发布时间】:2021-06-30 19:03:36
【问题描述】:
我拥有<all_urls> 主机权限和activeTab 权限,但此错误出现在chrome://extensions/ 上。这是我的清单(删除了不重要的细节):
{
"action": {
"default_icon": {...},
"default_popup": "...",
"default_title": "..."
},
"author": "...",
"background": {
"service_worker": "./some-js-1.js"
},
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["./some-js-2.js"]
}],
"description": "...",
"host_permissions": [
"<all_urls>"
],
"icons": {...},
"manifest_version": 3,
"name": "...",
"options_page": "...",
"permissions": [
"activeTab",
"storage",
"tabs"
],
"short_name": "...",
"version": "..."
}
在我的后台脚本 (./some-js-1.js) 中,这是截取屏幕截图的代码:
browser.windows.getCurrent().then(function(win){
browser.tabs.captureVisibleTab(win.id,{
"format":"png"
}).then(function(dataURI){
console.log(dataURI);
// do something with it
});
});
它在大多数地方都有效,但在 chrome://extensions/ 上无效 - 即使有 <all_urls> 和 activeTab 权限。
引用the documentation(强调我的),
要调用此方法,扩展程序必须具有
权限或activeTab 权限 。除了扩展程序可以正常访问的站点之外,此方法还允许扩展程序捕获原本受限制的敏感站点,包括 chrome:-scheme 页面、其他扩展程序的页面和 data: URL。 这些敏感站点只能在 activeTab 权限下被捕获。只有在扩展程序被授予文件访问权限的情况下才能捕获文件 URL。
我同时拥有<all_urls> 和activeTab,但仍然无法使用chrome://extensions。当我尝试将<all_urls> 放入permissions 键时,我收到一条警告,提示:
Permission '<all_urls>' is unknown or URL pattern is malformed.
我在host_permissions 中有它,因为我想访问所有主机,但似乎仍然没有授予权限(或者我做错了什么)。
我该如何解决这个问题?如果您需要更多信息,请在 cmets 中询问。
【问题讨论】:
-
@Robbi:我没有注入任何代码,我只是截屏。如果我注入代码或截屏,有什么区别吗?文档说如果你同时拥有
activeTab和<all_urls>,则可以截取chrome:-scheme页面,所以我希望能够截取chrome://extensions页面。 -
就像错误(在标题中)所说,captureVisibleTab 仅在从侦听器invoked by a user 调用时才有效。
-
@wOxxOm:您可以将其发布为答案吗?我很确定这一定是发生了错误 -
activeTab权限未激活,因为它提供了对活动选项卡的 临时 访问权限,而不是像我使用的tabs权限那样的永久访问权限!这个错误对我来说很难理解(主要是“in invoked”部分很难)。
标签: javascript google-chrome-extension