【问题标题】:Chrome Extension - Request Optional Permissions for current tabChrome 扩展程序 - 请求当前选项卡的可选权限
【发布时间】:2012-04-27 08:54:53
【问题描述】:

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

我在做什么:

  • 清单
    ...
    “权限”:[“选项卡”,“上下文菜单”],
    “可选权限”:["<all_urls>"],
    ...
    
  • 弹出窗口

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

     函数 reqPerm(url)
    {
        chrome.permissions.request({permissions: ['tabs'], origins: [url]}, function (granted)
        {
            日志('权限:',授予)
        });
    }

我得到了什么:

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

如果我在“optional_permissions”数组中手动​​设置 url (在这个例子中。https://stackoverflow.com/,一切都按我的需要工作。

【问题讨论】:

  • 可能还没有办法做到这一点。如果您使用*://*/* 而不是<all_urls> 会怎样?
  • 符合chrome的api是一样的。是的,我已经试过了,结果是一样的。
  • 然后,是的,您应该输入feature request 以便能够将域添加为可选权限,而无需在清单中列出该域(或通过列出该域的超集,例如@ 987654327@ 允许请求*://maps.google.com/*)。

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


【解决方案1】:

您正在尝试做的事情应该有效。在弹出的代码应该是:

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

您不需要从后台页面调用它。


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

【讨论】:

    【解决方案2】:

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

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

    你这样做

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

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

    【讨论】:

      【解决方案3】:

      目前这是不可能的,您只能请求清单中明确列出的 URL 的权限。但是,this feature request 应该使您尝试执行的操作(单击浏览器操作时自动授予权限)可行。

      【讨论】:

      猜你喜欢
      • 2017-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多