Расширение Chrome onMessage.addListener в background.js не вызывается

Я хочу иметь возможность общаться из сценария контента (любая вкладка) в фоновый режим.

Согласно документации, я должен использовать chrome.extension chrome.runtime.onMessage с chrome.runtime.sendMessage.

Итак, что я сделал:

manifest.json

"background": {
  "scripts": ["background.js"],
  "persistent": false
},
"permissions": [
  "*://*/*"
],

фон.js

console.info('1');
chrome.runtime.onMessage.addListener((request, sender, sendReponse) => {
  console.info('2');
  sendReponse({ msg: 'foo' });
  return true;
});

Я не очень уверен, что return true; нужен. Пробовал с и без.

После создания и перезагрузки расширения я получил доступ к фоновой странице Chrome через chrome://extensions

> 1 // background.js file was run
> chrome.runtime.sendMessage({ hello: 'so' }, v => console.info(v))
> undefined
> undefined // This is the callback response I get. Why?

Что еще более важно, я также получаю пустой обратный вызов ответа при запуске sendMessage из других вкладок (например, stackoverflow.com)

> chrome.runtime.sendMessage('extension id', { hello: 'so' }, v => console.info(v))
> undefined
> undefined

Почему я получаю пустой ответ обратного вызова?

Я пропустил какое-то специальное разрешение? Неверные параметры? Может быть, неправильные функции API для этого?


person zurfyx    schedule 08.04.2017    source источник
comment
Что касается return true, он нужен только тогда, когда ответ отправляется из асинхронно исполняемого кода.   -  person wOxxOm    schedule 08.04.2017


Ответы (1)


  1. #P1# <блочная цитата> #P2#
  2. веб-страницы могут отправлять сообщения на вашу фоновую страницу/страницу событий в двух случаях:

person wOxxOm    schedule 08.04.2017