【发布时间】:2018-12-27 02:45:07
【问题描述】:
我正在尝试在发布更新后为我的 Chrome 扩展程序的用户创造流畅的体验。
我在应用更新时重新注入了我的内容脚本,即使用户继续在扩展更新后未刷新的页面上使用我的扩展,我的功能仍然有效。刷新页面是理想的,但我不想强迫我的用户这样做。
但是,当我的代码尝试从内容脚本/页面向我的后台发送消息时,在扩展更新之后但在刷新页面之前,我的内容脚本控制台(插入内容脚本的页面)中出现以下错误页面:
未捕获的错误:扩展上下文无效。
有没有办法“重建”连接?我已经尝试了一个长期存在的端口和定期消息传递 - 更新扩展具有相同的效果。
任何想法/方向表示赞赏。
这是我的简单消息代码(在内容脚本中),它会引发错误...但能够与后台脚本通信:
chrome.runtime.sendMessage({ msg: "recordFeedback", obj: commentObj, source: source}, function(response){
console.log('Sent to DB...response was: ', response, response.recordFeedbackResponse);
});
【问题讨论】:
-
只需reinsert the content scripts。唯一的问题是当你的内容脚本有 DOM 监听器时,你需要通过another DOM message 告诉它断开它们。
-
感谢您查看...和链接。我在那篇文章中尝试了“var reconnectToExtension = function () {”方法并得到了同样的结果。我找不到任何有关“未捕获错误:扩展上下文无效”错误的文档。基本上我的内容脚本,即使重新注入,也可以与后台页面对话,但会抛出该错误......这令人担忧。
-
使用我的方法,您不需要过多的 reconnectToExtension hack。
-
不明白。您的方法“重新插入内容脚本”有 reconnectToExtension hack,或者您有其他方法?