【问题标题】:Clear temporary storage data for a Chrome extension when browser closes浏览器关闭时清除 Chrome 扩展的临时存储数据
【发布时间】:2021-05-24 16:47:29
【问题描述】:

我正在构建一个扩展程序,每次浏览器打开时都会要求用户输入强密码。其目的是在注册时使用该密码为新网站派生和生成强密码,并在用户下次访问已访问的网站时尝试重新生成相同的密码。 我正在使用以下方法来存储用户的主密码(用于密码生成),这是敏感信息:

window.sessionStorage.setItem(varName)

我使用下面的方法在需要时获取它。

sessionStorage.getItem(varName)

我的问题是,只要 Chrome 打开,我希望存储在浏览器数据中的这些数据有效。每次用户关闭浏览器时都需要清除此主密码,并在每次重新打开浏览器时询问。 我读到会话存储是临时的,它会被清除,但它不适用于我的扩展。我也知道没有什么可以添加来检测浏览器在停止运行脚本时关闭。 你能帮我吗?有没有这种方法可以短时间保存数据?

【问题讨论】:

  • 只需在持久后台脚本中使用全局变量。
  • @wOxxOm 感谢您的建议,但我从服务器中检索到一些其他元数据并在特定部分使用。
  • 也将其保存在全局变量中。

标签: google-chrome-extension session-storage google-chrome-storage chrome-sync


【解决方案1】:

由于 Manifest V3 删除了持久背景页面的概念。你可以用chrome.storage.local 模仿这个。唯一需要注意的是,它将变量存储在扩展本地存储中,这对该用户来说仍然可以。

模拟浏览器关闭的一种方法是创建一个打开的chrome.runtime.port,然后当浏览器关闭或重新加载扩展程序时,它将为该端口调用onDisconnect,您可以清除您的chrome.storage.local.clear()

chrome.runtime.onConnect.addListener(port => port.onDisconnect.addListener(() => chrome.storage.local.clear()))

当浏览器启动时,只需连接:

chrome.runtime.connect(null, {})

不幸的是,当后台脚本重新进入睡眠状态时,这可能会自行卸载,唯一的方法是保持您自己的托管扩展窗口弹出。但这对于用户体验来说可能有点过头了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-20
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 2010-12-19
    • 2020-06-28
    • 2012-07-10
    相关资源
    最近更新 更多