Я пишу веб-расширение и мне нужно получить карту в ответ на фоновый скрипт. Чтобы сделать мое расширение совместимым как с Firefox, так и с Chrome, я использую webextension-polyfill от Mozilla .
Вот пример кода:
front.js:
var sendmsg = browser.runtime.sendMessage(1);
sendmsg.then(
result => { handleResponse(result); },
error => { handleError(error); });
function handleError(e)
{
console.log("ERROR HANDLED: " + e);
}
function handleResponse(result)
{
console.log("map size = " + result.size);
}
background.js
var maptest = new Map();
browser.runtime.onMessage.addListener(onContentMessage);
function onContentMessage(msg, sender, handleResponse)
{
return new Promise(resolve => {
maptest.clear();
maptest.set("aaa", 1);
resolve(maptest);
});
}
Однако это работает только в ff, в любом браузере на основе хрома аргумент handleResponse имеет значение undefined . Я проверил Promises под Chrome без обмена сообщениями с контентом в фоновом режиме, и он правильно отображает карту. Проблема в webextension-polyfill и кто-нибудь знает, как ее решить?