Как я могу проверить, есть ли у меня разрешение на вызов chrome.tabs.captureVisibleTab ()? - PullRequest
0 голосов
/ 07 января 2012

В моих расширениях чрезмерно используется chrome.tabs.captureVisibleTab (), однако, если пользователь просматривает страницы, для которых у меня нет разрешений на вызов, произойдет сбой со следующим сообщением об ошибке в консоли:

Ошибка во время tabs.captureVisibleTab: невозможно получить доступ к содержимому URL "chrome: // settings / extensions #". Манифест расширения должен запрашивать разрешение на доступ к этому хосту.

Хотя это не мешает нормальной работе моего расширения, мне было интересно, если это способ проверки разрешений перед вызовом chrome.tabs.captureVisibleTab (), чтобы мое расширение не выглядело непрофессиональным

Ответы [ 2 ]

0 голосов
/ 09 января 2012

Просто получите информацию о манифесте расширения , а затем:

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 ( документы * 1008)*).Таким образом, вы можете проверить, есть ли у вашего добавочного номера конкретное разрешение:

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.
  }
});
0 голосов
/ 07 января 2012

Вы пытались обработать ошибку с помощью оператора try ... catch? Примерно так:

try {
      // If any error rises here
      chrome.tabs.captureVisibleTab();
} catch(e) {
      // Supress the error and go here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...