Всем добрго!
Пишу расширения для Хрома и столкнулся с непонятной для меня проблемой при отправки сообщения с
background в
content_script. Данные в
background я получаю по
Websocket и пересылаю в
content_script.
Вот мой код:
background:
ws.onmessage = function (event) {
console.log('MESSAGE: ' + event.data);
let msg = event.data;
console.log('got msg form device -> ', msg);
chrome.tabs.query({active: true}, function (tabs) {
console.log('tab > ', tabs[0].url, tabs[0].id);
let convertedData = String(tabs[0].url).includes("siteA.com") ? dataFormater('siteA', msg) : dataFormater('siteB', msg);
chrome.tabs.sendMessage(tabs[0].id, {
action: msg == 'removed' ? msg : 'showDepositModal',
data: convertedData
}, function (response) {
console.log(response);
});
})
};
И
content_script :
chrome.runtime.onMessage.addListener(
function (request, sender, sendResponse) {
if(window.location.href.includes("siteA.com") || window.location.href.includes("siteB.com")){
if (request.action == 'showDepositModal') {
console.log("content script got masg ", request.data);
showModal(request.data);
} else {
hideModal();
}
}
}
);
Вроде как все работает, но не особо стабильно :(
Очень часто
content_script не получает сообщения от
background, для того чтобы все сново заработало нужно просто обновить текущую страницу, и все работает... до какого то времени. Не понимаю почему....
Интересный факт - если в расширениях включить режим разработчика и открыть
background.js таких "залипаний" не наблюдал.
Буду благодарен за помощь в решении этой непонятной для меня ситуации