Ald*_*ord 3 javascript google-chrome runtime-error google-chrome-extension
如何实现我的事件处理程序返回true?(尝试了一切,但错误返回)
我收到以下错误:
“未经检查的 runtime.lastError:在收到响应之前消息端口已关闭。”
解决办法是:
"注意:sendResponse回调只有在同步使用时才有效,或者如果事件处理程序返回true表示它将异步响应。如果没有处理程序返回true或者sendResponse回调被垃圾收集,sendMessage函数的回调将被自动调用.”
https://developer.chrome.com/extensions/messaging#simple
编辑:另见(chrome):https : //github.com/mozilla/webextension-polyfill/issues/130
这是我的代码,我将非常感谢:
// 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;
}
});
Run Code Online (Sandbox Code Playgroud)
Ald*_*ord 10
现在好像修好了。我return 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;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10780 次 |
| 最近记录: |