如何检查我是否有权调用chrome.tabs.captureVisibleTab()?

时间:2012-01-07 12:06:23

标签: google-chrome-extension

我的扩展程序过度使用了chrome.tabs.captureVisibleTab(),但是如果用户正在浏览我没有调用权限的页面,则控制台中会显示以下错误消息:

  

tabs.captureVisibleTab期间出错:无法访问网址“chrome:// settings / extensions#”的内容。扩展清单必须请求访问此主机的权限。

虽然这不会影响我的扩展程序的正常流程,但我想知道这些是否是在调用chrome.tabs.captureVisibleTab()之前检查权限的方法,以防止我的扩展看起来不专业

2 个答案:

答案 0 :(得分:0)

您是否尝试使用try ... catch语句处理错误?像这样:

try {
      // If any error rises here
      chrome.tabs.captureVisibleTab();
} catch(e) {
      // Supress the error and go here
}

答案 1 :(得分:0)

只需获取扩展程序manifest info,然后:

for(var i = 0, permissions = {}; i < chrome.manifest.permissions.length; i++){
    // map array to object for later use
    permissions[chrome.manifest.permissions[i]] = true;
}

if(permissions.hasOwnProperty('tabs')){
    // capture
}

更新: 最近(开发者频道)Chrome开发者添加了新的强大API - chrome.permissionsdocs)。因此,您可以通过以下方式检查您的扩展程序是否具有特定权限:

chrome.permissions.contains({
  permissions: ['tabs'],
  origins: ['http://www.google.com/']
}, function(result) {
  if (result) {
    // The extension has the permissions.
  } else {
    // The extension doesn't have the permissions.
  }
});
相关问题