我的扩展程序过度使用了chrome.tabs.captureVisibleTab(),但是如果用户正在浏览我没有调用权限的页面,则控制台中会显示以下错误消息:
tabs.captureVisibleTab期间出错:无法访问网址“chrome:// settings / extensions#”的内容。扩展清单必须请求访问此主机的权限。
虽然这不会影响我的扩展程序的正常流程,但我想知道这些是否是在调用chrome.tabs.captureVisibleTab()之前检查权限的方法,以防止我的扩展看起来不专业
答案 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.permissions
(docs)。因此,您可以通过以下方式检查您的扩展程序是否具有特定权限:
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.
}
});