Chrome 扩展程序 - 请求当前标签页的可选权限

Chrome Extension - Request Optional Permissions for current tab

本文关键字:权限 标签 程序 扩展 请求 Chrome      更新时间:2023-09-26

>我正在尝试要求当前来源的选项卡权限。例如:我在 http://stackoverflow.com 上,单击徽章,然后单击弹出窗口中的按钮,我应该得到一个提示框以允许在此选项卡上进行操作。

我在做什么:

  • 清单
    ..."权限": ["选项卡", "上下文菜单"],"optional_permissions": [ "<all_urls>" ],...
  • 弹出

    $('#reqPermision').click(function(){    bg.reqPerm(url);});
  • 后台

    函数 reqPerm(url){    chrome.permissions.request({permissions: ['tabs'], origins: [url]}, function (granted)    {        log('permision:', granted)    });}

我得到的:

权限

请求期间出错:可选权限必须在扩展清单中列出。

如果我在"optional_permissions"数组中手动设置 url(在此例 https://stackoverflow.com/),一切都按照我需要的方式工作。

目前无法做到这一点,您只能请求清单中明确列出的 URL 的权限。但是,此功能请求应使您尝试执行的操作(单击浏览器操作时自动授予权限)可行。

你正在尝试做的事情应该有效。在弹出窗口中,代码应为:

$('#reqPermision').click(function() {
    chrome.permissions.request({origins: [url]}, function (granted) {
        log('permision:', granted)
    });
});

无需从后台页面调用它。


但是,最好使用像webext-domain-permission-toggle这样的模块,因为它将为您处理整个UI。

首先不允许 的可选权限//错误 在你的代码中其次,您需要在可选权限数组中指定选项卡权限你做到了

"permissions": ["tabs", "contextMenus"], "optional_permissions": [ "<all_urls>" ],

你这样做

"permissions": [, "contextMenus"], "optional_permissions": [ 'tabs' ,<any other permission you want>],

第三,您应该在请求许可之前检查,并且未授予,那么您应该请求它参考谷歌可选权限