chrome.browserAction, отключение иконки - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь отключить или включить свое расширение chrome на основе совпадений сценариев содержимого, но я думаю, что есть лучший способ.Ниже мой код.Похоже, что то, что я пытаюсь выполнить, может быть достигнуто с помощью chrome.declarativeContent.onPageChanged , но это, похоже, не срабатывает последовательно.

const IsMatch = (tab, matches) => {
 if (tab ==undefined && tab == null && tab.url == undefined){
  return false;
}

for(var ctr = 0; ctr < matches.length ; ctr ++){
  var match = matches[ctr].substring(0, matches[ctr].length - 1);
  if (tab.url.startsWith(match) ) {
    return true;
  }
}
return false;
}



const updateIcon = tabId => {
    chrome.browserAction.disable();
    chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
        var contentScripts = chrome.runtime.getManifest().content_scripts;
        for(var i = 0; i < contentScripts.length ; i ++){
          var contentScript = contentScripts[i];
          if ( IsMatch(tabs[0], contentScript.matches) ) {
            chrome.browserAction.enable();
            console.log('chrome.tabs.query');
            console.log(tabs[0]);
            return;
          }
        }
    });
  };
  chrome.tabs.onUpdated.addListener(updateIcon);

После измененийрекомендовано @wOxxOm Сейчас я в состоянии гонки: обновленный код

 browser.runtime.onMessage.addListener(function(request, sender, sendResponse) {  
    if (request.message === 'enableIcon') {
      console.log(sender.tab.id + ' ' + request.message);
      chrome.browserAction.setIcon({tabId: sender.tab.id, path: 'icon-16.png'});
      browser.browserAction.enable();
    }
    return true;
  });

  browser.tabs.onUpdated.addListener(function(tabId) {
    console.log(tabId + ' disableIcon');
    chrome.browserAction.setIcon({tabId: tabId, path: 'icon-16-Disabled.png'});
    chrome.browserAction.disable();
  });

Вот результат:

  • 6: backgroundIcon.js: 31 39 disableIcon
  • 1: backgroundIcon.js: 22 39 enableIcon
  • 2: backgroundIcon.js: 31 39 disableIcon
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...