无法从扩展文件background.js发送响应

时间:2019-06-08 11:24:27

标签: javascript events google-chrome-extension port

如果我在background.js文件中使用“ comment2”代码,则会发送我的响应,并且“ myPara”段落元素值按预期显示“测试注释2”,并且我不会收到任何错误消息。

如果我使用'comment1'代码'myPara'段落元素值显示为'undefined',并且我收到以下错误消息:

事件处理程序中的错误:ReferenceError:未定义alarmTuneValue 内容:_genic_background_page.html 突出显示:sendResponse(alarmTuneValue);

unchecked 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
    }


}

0 个答案:

没有答案