首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Chrome“未选中的runtime.lastError:消息端口在收到响应之前关闭”

Chrome“未选中的runtime.lastError:消息端口在收到响应之前关闭”
EN

Stack Overflow用户
提问于 2020-01-25 22:22:55
回答 1查看 1.4K关注 0票数 2

我试图简单地从background.js中从popup.js调用一个函数。但是,我得到了“未经检查的runtime.lastError:消息端口在收到响应之前关闭”。错误。

我最初的“握手”消息运行良好,没有错误,但是我的“AnotherMessage”得到了上面的错误。

我试图跟踪onMessage和sendMessage文档,找到了这里,但我可能做错了什么。

popup.js

代码语言:javascript
运行
复制
//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

代码语言:javascript
运行
复制
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实现不同的功能执行。

EN

回答 1

Stack Overflow用户

发布于 2020-01-28 14:36:36

在后台脚本中,如果调用sendResponse异步,则必须从回调函数返回true

代码语言:javascript
运行
复制
 chrome.runtime.onMessage.addListener((request,sender,sendResponse){
    if (request.msg === "Handshake"){
        //Do something
    } else if (request.msg === "AnotherMessage") {
        //Do something else
   }
   return true;   
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59913934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档