如何从内容脚本正确处理chrome扩展更新

Val*_*sin 5 javascript google-chrome google-chrome-extension

在后台页面中,我们可以使用检测扩展更新chrome.runtime.onInstalled.addListener.

但是在更新扩展后,所有内容脚本都无法连接到后台页面.我们得到一个错误:Error connecting to extension ....

可以使用chrome.tabs.executeScript... 重新注入内容脚本但是如果我们有一个敏感数据应该在更新之前保存并在更新后使用怎么办?我们能做什么?

此外,如果我们重新注入所有内容脚本,我们应该正确地拆除以前的内容脚本.

在不丢失用户数据的情况下,从内容脚本处理扩展更新的正确方法是什么?

Ole*_*sii 2

如果您已经通过(如https://developer.chrome.com/extensions/messaging#connectvar port = chrome.runtime.connect(...)中所述 )建立了通信,则应该可以侦听该事件runtime.Port.onDisconnect

tport.onDisconnect.addListener(function(msg) {...})
Run Code Online (Sandbox Code Playgroud)

在那里你可以做出反应,例如应用某种记忆化,比如说 via localStorage。但总的来说,我建议保持内容脚本尽可能小,并在后台执行所有数据操作,让内容仅收集/传递数据并在需要时呈现一些状态。