#javascript #tabs #runtime-error #opera
#javascript #вкладки #время выполнения-ошибка #opera
Вопрос:
У меня возникает ошибка при смене вкладки во время отправки данных из сценария содержимого в фоновый сценарий и ожидания ответа. Когда я нахожусь на той же вкладке, пока не получу ответ от фонового скрипта, все в порядке.
Информация об ошибке: непроверенная среда выполнения.lastError: не удалось установить соединение. Принимающая сторона не существует.
content.js:
window.addEventListener('load', (event) => {
GetBgScriptStatus();
});
/* WORK with background scripts */
function GetBgScriptStatus() {
var message = { request: "GetBgScriptStatus" };
SendMessageToBackgroundScript(message);
console.log("send to bg script: " message.request);
}
function SendMessageToBackgroundScript(message) {
chrome.runtime.sendMessage(message, function (response) {});
}
chrome.runtime.onMessage.addListener(
function (request, sender, sendResponse) {
var message = request;
if (message.context != null || message.request != null) {
if(message.context == "AnswerFromBgScript"){
console.log("response from bg script: " message.data);
}
}
});
background.js:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
var message = request;
if(message.request === "GetBgScriptStatus")
{
let timeDelay = 4000;
const interval = setTimeout(function(){
var messageForMainScript = {context: "AnswerFromBgScript"};
SendMessageToMainScript(messageForMainScript);
}, timeDelay);
}
});
function SendMessageToMainScript(messageForMainScript)
{
// Send message to content script
chrome.tabs.query(
{active: true, currentWindow: true},
function(tabs)
{
chrome.tabs.sendMessage
(
tabs[0].id,
messageForMainScript,
function(response)
{
//console.log(response.farewell)
}
)
}
)
// .END (Send message to content script)
}