Связь между сценариями в фоновом контексте (фоновый сценарий, действие браузера, действие страницы, страница параметров и т. Д.)

Я столкнулся с проблемой отправки данных из моего фонового скрипта в скрипт для моегоpageAction, Мой контент-скрипт добавляет<iframe /> и JavaScript в<iframe /> получает данные из моего фонового скрипта, но, похоже, не восстанавливается в моемpageAction.

В моем фоновом скрипте у меня есть что-то вроде:

chrome.tabs.sendMessage(senderTab.tab.id, 
{
   foo:bar
}); 

гдеsenderTab.tab.id является "отправителем" вonMessage Слушатель в моем фоне сценария.

В JavaScript загружен<iframe /> введенный моим скриптом контента у меня что-то вроде:

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
      console.log("received in iframe:", request);
    }   
});

<iframe /> получает сообщение точно так, как ожидалось.

Я поставил тот же JavaScript в моемpage_action.js, но он не получает никаких данных из фонового скрипта. Действие страницы активируется с помощьюchrome.pageAction.show(senderTab.tab.id); прежде чем я позвонюchrome.tabs.sendMessage(senderTab.tab.id ...

Разве HTML-страница, прикрепленная к моей странице, не является частью той же вкладки? Так как этоtabId позволил мне активировать / «показать» значок, я думаю, что слушатель в JavaScript для страницы действий также должен получать отchrome.tabs.sendMessage(senderTab.tab.id ...

В моем скрипте содержимого я использую следующее для отправки данных в фоновый скрипт:

chrome.runtime.sendMessage({
  foo: bar
});  

Когда скрипт содержимого отправляет вышеуказанное сообщение, JavaScript pageAction забирает его.

Как получить фоновый скрипт для правильной отправки данных на мою страницу действий? Я не хочу иметь запрос / опрос pageAction, вместо этого я хочу, чтобы pageAction просто слушал и получал. Например, если HTML-код pageAction показан, он должен иметь возможность обновляться в реальном времени, поскольку фоновая страница вносит изменения.

Ответы на вопрос(1)

Ваш ответ на вопрос