javascript - “未捕获(承诺)错误:'activeTab' 权限无效,因为尚未调用此扩展。” 在 Chrome 扩展程序中
问题描述
我有<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>
andactiveTab
权限。
引用文档(强调我的),
为了调用此方法,扩展必须具有<all_urls> 权限或 activeTab 权限。除了扩展程序可以正常访问的站点外,此方法还允许扩展程序捕获原本受限制的敏感站点,包括chrome:-scheme pages、其他扩展程序的页面和 data: URL。这些敏感站点只能通过 activeTab 权限捕获。仅当扩展名已被授予文件访问权限时,才能捕获文件 URL。
我有<all_urls>
和activeTab
,但仍然chrome://extensions
不可用。当我尝试<all_urls>
插入permissions
钥匙时,我收到一条警告说,
Permission '<all_urls>' is unknown or URL pattern is malformed.
我之所以拥有它,是host_permissions
因为我想访问所有主机,但似乎仍然没有授予权限(或者我做错了什么)。
我怎样才能解决这个问题?如果您需要更多信息,请在评论中提问。
解决方案
你不能注入 chrome://extensions/ <-- 以前的评论
我很仓促,没有正确阅读所有内容。我从未使用过“captureVisibleTab”,但我很快阅读了规范,看来您已正确包含“activeTab”权限。
但是,另一方面,从清单中可以清楚地看出您希望将脚本注入每个页面。
我的建议(这可能会让你无处可去)是在清单中评论“content_scripts”部分,然后重新安装扩展程序,看看是否仍然抛出该错误。
另外,我建议您将后台脚本中的 captureVisibleTab 操作绑定到 browserAction 单击或上下文菜单项。
最后,不能排除这个API在MV3版本中可能存在一些bug
推荐阅读
- sap-erp - SAP 查询 - BSEG 和 BKPF
- javascript - 如何为多个 HTML 文件调用一个 JavaScript 文件?
- swift - Xcode Swift - WKWebView 实现
- typescript - 访问私有构造函数
- signals - 带 LimeSDR IQ 分路器相移的 GnuRadio
- vba - VBA中变量名的变量值
- javascript - 刷新计时器在达到 0 时显示文本,而不是继续负倒计时
- .net-core - Visual Studio 2019 中的 .NET Core - 桌面部署选项
- python - 如何在 Python 中创建范围列表?
- reactjs - 如何在 Muidialog 中禁用 MuiBackdrop(材料 UI 反应)