Слушатель chrome.runtime.onMessage никогда не запускается - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь установить текст значка для каждой вкладки в Chrome.

Я следовал вместе с этим ответом https://stackoverflow.com/a/32168534/8126260, чтобы сделать это, хотя обработчик события chrome.runtime.onMessageникогда не запускается.

// tab specific badges https://stackoverflow.com/questions/32168449/how-can-i-get-different-badge-value-for-every-tab-on-chrome
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
  console.log('runtime message');
  if (message.badgeText) {
    console.log('runtime message with badge text');
      chrome.tabs.get(sender.tab.id, function(tab) {
          if (chrome.runtime.lastError) {
              return; // the prerendered tab has been nuked, happens in omnibox search
          }
          if (tab.index >= 0) { // tab is visible
              chrome.browserAction.setBadgeText({tabId:tab.id, text:message.badgeText});
              console.log('set message');
          } else { // prerendered tab, invisible yet, happens quite rarely
              var tabId = sender.tab.id, text = message.badgeText;
              chrome.webNavigation.onCommitted.addListener(function update(details) {
                  if (details.tabId == tabId) {
                      chrome.browserAction.setBadgeText({tabId: tabId, text: text});
                      chrome.webNavigation.onCommitted.removeListener(update);
                  }
              });
          }
      });
  }
});

// block outgoing requests for help widgets
chrome.webRequest.onBeforeRequest.addListener(
              function(details) {
                //send message

                console.log('send message');
                chrome.runtime.sendMessage({badgeText: "HELP"});

                  if (isDisabled) {
                    return { cancel: false } // this should return from the function (details) level
                  } else {
                    return { cancel: true }
                  }
              },
              {urls: [
                "a bunch of urls irrelevant to this question"
              ]},
              ["blocking"]);

(весь исходный код включен https://github.com/bcye/Hello-Goodbye)

При просмотре консоли моего фонового скрипта появляется сообщение отправки, означающее, что chrome.runtime.sendMessage({badgeText: "HELP"}); должнобыл выполнен.

Ни один из операторов console.log в слушателе onMessage не был выполнен.

1 Ответ

0 голосов
/ 07 апреля 2019

Решил, как сказал @wOxxOm, это невозможно.

Хотя webRequest передает tabId в словарь подробностей.Это может быть использовано для воспроизведения этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...