невозможно отправить ответ из файла расширения background.js - PullRequest
0 голосов
/ 08 июня 2019

Если я использую код 'comment2' в файле background.js, мой ответ отправляется, и значение элемента абзаца 'myPara' показывает «тестовый комментарий 2», как и ожидалось, и я не получаю сообщений об ошибках.

Если я использую код 'comment1', значение элемента абзаца myPara показывает 'undefined', и я получаю следующие сообщения об ошибках:

Ошибка в обработчике события: ReferenceError: alarmTuneValue не определено Контекст: _generated_background_page.html выделено: sendResponse (alarmTuneValue);

Не проверено runtime.lastError: Порт сообщения закрыт до получения ответа. Контекст: timerpopup.html

Похоже, код 'comment1' даже не запускался, так как он говорит, что alarmTuneValue не определен.

Я не совсем уверен, что означает сообщение об ошибке порта, поскольку я новичок в этом. Я предполагаю, что порт сообщения подобен туннелю между sendMessage и onMessage, где информация может быть отправлена ​​туда и обратно. Если порт закрывается, дальнейшие сообщения / ответы не могут быть доставлены. Это правильно? Если это так, я не понимаю, почему порт будет открыт при использовании кода 'comment1', а не кода 'comment2'?

Я включил только код из файлов background.js и timerpopup.html, который, как представляется, имеет отношение к этой проблеме, а также файл manifest.json.

background.js:

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse){


if(message != "stop timer"){


}else{
/* comment1:    
chrome.storage.sync.get('number', function(data){
        alarmTuneValue  = "test";
        });
*/

// comment2: alarmTuneValue = "test"

sendResponse(alarmTuneValue);

clearTimeout(myTime);
clearInterval(myInt);
}

})

timerpopup.js:

form.stop.addEventListener("click", function(){

chrome.runtime.sendMessage("stop timer", function(response){
    document.getElementById("myPara").innerHTML = response;
});
})

manifest.json:

{
    "name": "timer",
    "version": "1.0",
    "description": "timer which plays tune at end and shows alert message!",
    "manifest_version": 2,
    "permissions": ["storage"],
   "options_page": "options.html", 

    "browser_action": {
      "default_popup": "timerpopup.html",
      "default_icon": "green alarm.png"
    },

    "background": {
      "scripts": ["background.js"],
      "persistent": true
    }


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...