browser.runtime.onMessage не запущен - PullRequest
0 голосов
/ 25 марта 2020

Я разрабатываю расширение firefox, и у меня есть следующий код в сценарии. js:

browser.runtime.sendMessage({book:book,link:book.reviewsLink,type:"getBSR"}, (response) => {
        console.log(response);  
//CODE 
});

В фоновом режиме. js:

browser.runtime.onMessage.addListener((request, sender, sendResponse) => {
    console.log("HELLO FROM BACKGROUND");
    //CODE
});

Сценарий. js печатает сразу "undefined", но в фоновом режиме консоль не печатает "HELLO FROM BACKGROUND", поэтому слушатель не работает. У меня такой же код на моем chrome расширении, единственное, что изменилось, это chrome .runtime insted browser.runtime.

Я действительно запутался, потому что код документации Mozilla точно такой же, как мой.

1 Ответ

0 голосов
/ 26 марта 2020

Как упомянуто wOxxOm, browser возвращает Promise, а chrome возвращает callback функцию. Это означает:

// callback
chrome.runtime.sendMessage({book:book,link:book.reviewsLink,type:"getBSR"}, (response) => {
        console.log(response);  
//CODE 
});

// Promise
browser.runtime.sendMessage({book:book,link:book.reviewsLink,type:"getBSR"}).then((response) => {
        console.log(response);  
//CODE 
});

Также, как упомянуто wOxxOm, там недостаточно информации для правильного ответа. Когда каждый из них работает, в каком контексте et c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...