Передача сообщений из сценариев содержимого на фоновую страницу в расширениях Chrome - PullRequest
0 голосов
/ 07 октября 2011

Проблема передачи сообщений расширений Google Chrome:

В этом расширении Chrome

Моя всплывающая страница:

chrome.browserAction.onClicked.addListener(getMessage);
getMessage();

function getMessage()
{
    chrome.tabs.getSelected(null, function(tab) {
        chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) {
            console.log(response.farewell);
        });//getting response from content script
    });
}

Страница моего скрипта:

chrome.extension.onRequest.addListener(
  function(request, sender, sendResponse) {
    if (request.greeting == "hello")
      sendResponse({farewell: "goodbye"});
    else
      sendResponse({}); 
  });

Я не получаю никакого ответа от скрипта содержимого.

редактирует:

Согласно @ serg , я переместил код на фоновую страницу. Но все равно не работает

1 Ответ

4 голосов
/ 07 октября 2011

Вы не можете иметь слушателя chrome.browserAction.onClicked, если у вас есть всплывающая страница, прикрепленная к кнопке действий браузера, она не будет срабатывать.

  • Удалить всплывающее окно, оставить только кнопку
  • Переместить все на фоновую страницу.
  • Заменить tab.id на null.
  • Удалите createFile(); вызов в начале, так как в этом случае он ничего не сделает (скрипт содержимого еще не готов к прослушиванию).
  • Не использовать оповещения для отладки расширения, используйте console.log().
...