【发布时间】:2020-05-11 19:31:11
【问题描述】:
我试图简单地从 popup.js 调用 background.js 中的一个函数。但是,我得到“未检查的 runtime.lastError:消息端口在收到响应之前关闭。”错误。
我最初的“握手”消息运行良好,没有错误,但我的“AnotherMessage”收到上述错误。
我正在尝试遵循here 找到的 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 em>' 提交应该在 background.js 中执行 'function-2'。我正在尝试通过 sendMessage 和 onMessage 实现不同的功能执行。
【问题讨论】:
-
在后台脚本中,如果异步调用
sendResponse,则必须从回调函数中返回true。 -
尝试将第二个 sendMessage 放在第一个的回调中。
-
请把我当白痴对待。我不确定您的意思,您介意详细说明吗?
标签: javascript google-chrome-extension message-passing