Ошибка расширения. Непроверенная среда выполнения.lastError: не удалось установить соединение. Принимающая сторона не существует

#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)
    
}