browser.runtime.onMessage 未触发
browser.runtime.onMessage not triggered
我正在开发一个 firefox 扩展,我在 script.js 中有以下代码:
browser.runtime.sendMessage({book:book,link:book.reviewsLink,type:"getBSR"}, (response) => {
console.log(response);
//CODE
});
在 background.js 中:
browser.runtime.onMessage.addListener((request, sender, sendResponse) => {
console.log("HELLO FROM BACKGROUND");
//CODE
});
script.js 立即打印 "undefined" 但在后台控制台不打印 "HELLO FROM BACKGROUND" 因此侦听器不起作用。我的 chrome 扩展上有相同的代码,唯一改变的是 chrome.runtime 改为 browser.runtime。
我真的很困惑,因为 Mozilla 文档的代码和我的一模一样。
如 wOxxOm 所述,browser
returns 一个 Promise
和 chrome
returns 一个 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 所提到的,那里没有足够的信息来正确回答。每个 运行 在什么情况下等
我正在开发一个 firefox 扩展,我在 script.js 中有以下代码:
browser.runtime.sendMessage({book:book,link:book.reviewsLink,type:"getBSR"}, (response) => {
console.log(response);
//CODE
});
在 background.js 中:
browser.runtime.onMessage.addListener((request, sender, sendResponse) => {
console.log("HELLO FROM BACKGROUND");
//CODE
});
script.js 立即打印 "undefined" 但在后台控制台不打印 "HELLO FROM BACKGROUND" 因此侦听器不起作用。我的 chrome 扩展上有相同的代码,唯一改变的是 chrome.runtime 改为 browser.runtime。
我真的很困惑,因为 Mozilla 文档的代码和我的一模一样。
如 wOxxOm 所述,browser
returns 一个 Promise
和 chrome
returns 一个 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 所提到的,那里没有足够的信息来正确回答。每个 运行 在什么情况下等