Почему пользователь предоставляет необязательное разрешение, но не обнаружено в функции chrome.permissions.contains?

#google-chrome-extension

#google-chrome-расширение #google-chrome-extension

Вопрос:

Я разрабатываю расширение Chrome. Странно то, что оно отлично работает на локальном компьютере (используя способ «Загрузить распакованную папку»).

Однако, когда я отправил его в Chrome Web Store, он не работает.

Вот подробности:

В manifest.json :

 "optional_permissions": [ "u003Call_urls"],
"permissions": [ "activeTab", "contextMenus" ],
  

В option.js :

 // First of all, check whether I've got the permissions
chrome.permissions.contains({
  origins: ['u003Call_urls>']
}, function(result) {
  if (result) {
    // If I have the permission, remove the "grant" button.
    $('#grant_button').remove();
  } else {
    // If I don't have the permission, let the "grant" button be able to invoke a permission request
    $('#grant_button').click(function(){
      chrome.permissions.request({
        origins: ['u003Call_urls>']
      }, function(granted) {}
    });
  }
});
  

Странно, что все отлично работает в локальном режиме:

  1. Кнопка предоставления разрешения включена сначала
  2. Когда я нажимаю кнопку предоставления, появляется окно подтверждения разрешения.
  3. Когда я нажимаю кнопку «Разрешить» и обновляю страницу настроек, кнопка «Предоставить» исчезает.

Но в выпущенной версии в Chrome Web Store:

  1. Кнопка предоставления разрешения включена сначала
  2. Когда я нажимаю кнопку предоставления, появляется окно подтверждения разрешения.
  3. Когда я нажимаю кнопку «Разрешить» и обновляю страницу своих опций, кнопка «Предоставить» ВСЕ ЕЩЕ там. И chrome.permissions.contains действительно вернуло значение false. И нет возможности вызвать chrome.permissions.request еще раз.

Комментарии:

1. Звучит как crbug.com/931816 сломано в 72 и исправлено в 74, т. е. в beta / dev / canary.

2. Спасибо. Я использовал tabs , чтобы все исправить.