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

时间:2012-04-15 23:41:01

标签: javascript google-chrome permissions google-chrome-extension

我正在尝试要求当前来源的标签权限。 例如:我在http://stackoverflow.com,点击徽章,然后点击弹出按钮,我应该会出现一个提示框,允许在此标签上进行操作。

我在做什么:

  • manifest
    ...
    "permissions": ["tabs", "contextMenus"],
    "optional_permissions": [ "<all_urls>" ],
    ...
    
  • 弹出

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

  • 背景

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

我得到了什么:

  

permissions.request 期间出错:必须在扩展程序清单中列出可选权限。

如果我在“optional_permissions”数组中手动​​设置了网址(在此例外https://stackoverflow.com/,那么一切正常。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您要尝试执行的操作应该可以。在弹出窗口中,代码应为:

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

您无需从后台页面调用它。


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

答案 2 :(得分:-2)

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

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

你这样做

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

第三,你应该在它请求许可之前检查它并且它没有被授予然后你应该请求它 参考google optional permission