2014-11-05 2 views
3

Я пытаюсь отправить сообщение от background.js к content.js, используя следующий код:расширение Chrome: Сообщение от background.js к content.js

фона

chrome.runtime.sendMessage({'method': 'test'}); 

Содержание

chrome.runtime.onMessage.addListener(function(message,sender,sendResponse){ 
    if(message.method == 'test') 
    console.log('Got message'); 
}); 

Фоновое сообщение отправляется, когда background.js получает определенное сообщение от popup.js, которое происходит при событии клика. Таким образом, пользователь нажимает кнопку во всплывающем окне, и сообщение отправляется на задний план, а затем на контент.

У меня такое чувство, что моя проблема связана с тем, что при нажатии кнопки во всплывающем окне (это отдельная вкладка) скрипт содержимого не получает его, потому что это не текущая активная вкладка.

Пожалуйста, помогите мне.

ответ

9

В Chrome API есть функции 2 sendMessage.

  • chrome.runtime.sendMessage посылает сообщение всех открытого страницы расширения (т.е. фон, всплывающее окно и т.д.)
  • chrome.tabs.sendMessage посылает сообщение всех содержание сценариев от расширения в данной вкладке

Итак, чтобы отправить сообщение на скрипт контента, вам необходимо использовать chrome.tabs. Чтобы отправить сообщение из сценария содержимого (или на внутренних страницах), вам необходимо использовать chrome.runtime.

Мероприятие chrome.runtime.onMessage в обоих случаях.

Для получения более подробной информации см. Messaging docs.

+0

Это имеет смысл! Спасибо вам за помощь. – ALR

+0

Это помогло мне [здесь] (http://stackoverflow.com/questions/27952019/chrome-runtime-onmessage-addlistener-not-registering-within-created-tab), когда я думал, что мои проблемы исходят с другой стороны –

Смежные вопросы