未捕获错误的原因:尝试使用断开连接的端口对象

Mar*_*rek 17 messaging google-chrome-extension

我在响应来自内容脚本的请求时在后台页面中收到此错误.有谁知道可能导致此错误的原因是什么?

完整堆栈跟踪:

Uncaught Error: Attempting to use a disconnected port object   chrome/RendererExtensionBindings:147 
chrome.Port.postMessage     chrome/RendererExtensionBindings:147 
chromeHidden.Port.dispatchOnConnect.connectEvent         chrome/RendererExtensionBindings:89 
myExtension.foo.sendResponse.state      background.js:1573 
db.readTransaction.tx.executeSql.paramStr      background.js:1038 
Run Code Online (Sandbox Code Playgroud)

这只发生在几个小时的浏览重新加载扩展后没有帮助 - 不是在重新启动Chrome浏览器后它将是一个解决方案所有恢复正常几个小时内容脚本可以继续向后台发送请求但是没有来自后台的响应可以被发送回来有没有什么方法可以捕获这个Uncaught错误并重置监听器?

我正在使用chrome.extension.onRequest.addListener进行沟通.在我回复之前我查询数据库,在查询完成之前我不发送任何其他响应.

谢谢,马雷克

abr*_*ham 19

这是在连接关闭时引起的.例如,如果您打开一个注入了content_script的选项卡,它会打开一个连接,该选项卡将关闭,然后background_page会尝试传递一条消息.它将失败,因为选项卡不再处于活动状态以接收消息.

在您的情况下,我猜测当标签关闭并打开新标签时,您尝试使用旧标签发布消息,而不是创建与新标签的新连接.我建议再次通过长期连接部分阅读.