Javascript 如何实施";返回true&引用;?错误:";消息端口在收到响应之前关闭。”;
如何实现我的事件处理程序返回true?(尝试了所有操作,但错误返回) 我发现以下错误: “未选中的runtime.lastError:消息端口在 收到了答复。” 解决办法是: “注意:sendResponse回调仅在同步使用时有效, 或者如果事件处理程序返回true以指示它将响应 异步。将调用sendMessage函数的回调 如果没有处理程序返回true或sendResponse 回调已被垃圾回收。“ 编辑:另请参见(chrome): 这是我的代码,我非常感谢:Javascript 如何实施";返回true&引用;?错误:";消息端口在收到响应之前关闭。”;,javascript,google-chrome,google-chrome-extension,runtime-error,Javascript,Google Chrome,Google Chrome Extension,Runtime Error,如何实现我的事件处理程序返回true?(尝试了所有操作,但错误返回) 我发现以下错误: “未选中的runtime.lastError:消息端口在 收到了答复。” 解决办法是: “注意:sendResponse回调仅在同步使用时有效, 或者如果事件处理程序返回true以指示它将响应 异步。将调用sendMessage函数的回调 如果没有处理程序返回true或sendResponse 回调已被垃圾回收。“ 编辑:另请参见(chrome): 这是我的代码,我非常感谢: // receive mess
// receive message from pop-up or options
chrome.extension.onMessage.addListener(function (aRequest, aSender,
aSendResponse) {
if (!aSender) {
return;
}
switch (aRequest.cmd) {
// reload lists
case 'reload':
XX.blockedDomains = {};
XX.load();
break;
// send list of recently blocked
case 'blocked':
aSendResponse(Object.keys(XX.blockedDomains));
break;
// deny domain
case 'deny':
XX.blocklist[aRequest.domain] = 1;
delete XX.blockedDomains[aRequest.domain];
XX.save();
break;
}
});
现在似乎已经修好了。我添加了
返回true代码>位于最后一行的第二行,现在日志中不再有错误条目
这个解决方案行吗?如果有什么问题,我们会很高兴得到反馈。否则,我将在几天后将此线程标记为已解决
// receive message from pop-up or options
chrome.extension.onMessage.addListener(function (aRequest, aSender,
aSendResponse) {
if (!aSender) {
return;
}
switch (aRequest.cmd) {
// reload lists
case 'reload':
XX.blockedDomains = {};
XX.load();
break;
// send list of recently blocked
case 'blocked':
aSendResponse(Object.keys(XX.blockedDomains));
break;
// deny domain
case 'deny':
XX.blocklist[aRequest.domain] = 1;
delete XX.blockedDomains[aRequest.domain];
XX.save();
break;
}
return true;
});
返回true可以解决您的问题,因为:
您始终需要sendresponse,您可以向任何值发送响应,但必须发送响应
在您的代码中,除了没有sendresponse之外,还有很多情况
当事件侦听器返回时,此sendresponse函数将无效,除非您从事件侦听器返回true以指示您希望异步发送响应(这将保持消息通道向另一端开放,直到调用sendresponse为止)
ref:发布的代码不调用异步函数,因此无需在此处添加return true
。问题一定是别的,不是在发布的代码中,而是在发送消息的代码中。也不清楚为什么您在WebExtension polyfill中链接了这个问题,您在这里没有使用它。谢谢,我正在检查所有其他代码。我认为上面发布的是问题所在,所以(逻辑上)没有任何帮助。请查看Chrome 73Man中是否出现此错误。有同样的问题,无法找出问题所在。“返回真值”修正了它!