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

Google chrome extension 如何检查我是否有权调用chrome.tabs.captureVisibleTab()?,google-chrome-extension,Google Chrome Extension,My extensions过度使用了chrome.tabs.captureVisibleTab(),但是如果用户在我没有权限的页面中浏览,则调用会失败,控制台中会显示以下错误消息: 制表期间出错。captureVisibleTab:无法访问url的内容“chrome://settings/extensions#". 扩展清单必须请求访问此主机的权限 虽然这不会干扰我的扩展的正常流程,但我想知道在调用chrome.tabs.captureVisibleTab()之前,这是否是一种检查权限的方法,以

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

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


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

您是否尝试使用try…catch语句处理错误?大概是这样的:

try {
      // If any error rises here
      chrome.tabs.captureVisibleTab();
} catch(e) {
      // Supress the error and go here
}
只需获得分机,然后:

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
}

不幸的是,这不起作用。这个错误似乎不是例外。这还不够检查,因为captureVisibleTab需要访问URL,除了
选项卡
权限之外。当然-所以你可以从权限中获取URL并手动检查(我没有更好的主意)。顺便说一句,我希望你知道扩展不能访问“chrome://”网站?所以,也许检查url协议就足够了?我假设扩展无法访问“chrome://”站点,我想检查协议就足够了,我只是希望有一个更简单的解决方案(我正在使用“”权限,我不想开始硬编码HTTP、HTTPS、FTP、GOPHER等)
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.
  }
});