Если я использую код '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
}
}