Передача сообщений из скриптов содержимого на фоновую страницу в расширениях Chrome

#javascript #google-chrome-extension #message-passing

#javascript #google-chrome-extension #передача сообщений

Вопрос:

Проблема с передачей сообщений в расширениях 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. да, это идентификатор выбранной в данный момент вкладки

Ответ №1:

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

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

Комментарии:

1. я отредактировал код до фактического, который у меня работал нормально, пожалуйста, chk