我试图简单地从background.js中从popup.js调用一个函数。但是,我得到了“未经检查的runtime.lastError:消息端口在收到响应之前关闭”。错误。
我最初的“握手”消息运行良好,没有错误,但是我的“AnotherMessage”得到了上面的错误。
我试图跟踪onMessage和sendMessage文档,找到了这里,但我可能做错了什么。
popup.js
//works perfectly fine
chrome.runtime.sendMessage({msg:"Handshake"}, response => {
if(response.error){
console.log(response);
}
});
//Gives error message
chrome.runtime.sendMessage({msg:"AnotherMessage"}, response => {
if(response.error){
console.log(response);
}
});
我想要两个'sendMessage‘的原因是因为我希望根据特定的逻辑在background.js中执行特定的函数。
background.js
chrome.runtime.onMessage.addListener((request,sender,sendResponse){
if(request.msg === "Handshake"){
//Do something
} else if (request.msg === "AnotherMessage") {
//Do something else
}
});
更新:为了添加一些上下文,我的扩展中基本上有两种形式。我希望将表单提交的数据发送到我的数据库,所以' form -1‘提交执行'function-1',而'form-2’提交应该在background.js中执行'function-2‘。我正试图通过sendMessage和onMessage实现不同的功能执行。
发布于 2020-01-28 14:36:36
在后台脚本中,如果调用sendResponse异步,则必须从回调函数返回true
chrome.runtime.onMessage.addListener((request,sender,sendResponse){
if (request.msg === "Handshake"){
//Do something
} else if (request.msg === "AnotherMessage") {
//Do something else
}
return true;
});
https://stackoverflow.com/questions/59913934
复制相似问题