【问题标题】:Chrome Extension Saving DataChrome 扩展程序保存数据
【发布时间】:2023-04-07 04:58:02
【问题描述】:

我正在开发一个 Chrome 扩展程序,它需要保存一些信息(主要是标签信息),这些信息将在扩展程序的整个生命周期中存在(例如,从用户开始使用它直到他关闭浏览器)。

一种选择是使用 localstorage,但是 localstorage 只能保存字符串,这让我很不舒服(因为我有一堆数据要保存 - 日期、URL、整数等)。我正在寻找的是使用我自己的 javascript 对象,这些对象将在整个扩展期间存在。
现在的问题是,在某些 javascript 文件中的脚本中定义这些对象会在用户每次单击浏览器操作时删除它们。换句话说,我有一个名为 popup.html 的浏览器操作,其中包含一个 javascript 文件(我想在其中保存我的对象),每次用户单击浏览器操作时,我在 JS 文件中定义的所有对象都会丢失,但是我希望一切都被持久化。

我必须保留哪些选项来保留通过多次点击浏览器操作而不是本地存储的数据?

【问题讨论】:

标签: javascript google-chrome google-chrome-extension


【解决方案1】:

你真的应该使用 localStorage(你可以使用 JSON.stringify 和 JSON.parse)。

如果您真的不想使用 localStorage 或服务器端存储,请使用 IndexedDb :https://developer.mozilla.org/en/IndexedDB/Using_IndexedDB

【讨论】:

  • 如果没有其他选择,我将退回到 localStorage。你知道是否可以使用背景页面来解决我的问题吗?我无法完全理解他们从手册中所做的事情......
  • 您可以使用背景页面,但可能不需要。您的扩展程序的任何脚本都可以读写 localStorage。
【解决方案2】:

尝试使用Filesystem API 的持久存储。这比localStorage 更可靠。 localStorage 将在用户清除缓存、cookie 等后被清除。文件系统更可靠。

【讨论】:

  • 为什么即使用户明确删除了 cookie 等,仍然保留数据是个好主意?作为用户,你会想要这种行为吗?这很奇怪,因为@Joel_Blum 要求的东西只在用户会话期间持续存在。
  • 不幸的是,FileSystem API 似乎没有被 Chrome 以外的其他浏览器采用,并且基本上被 LocalStorage “取代”
【解决方案3】:

这个关于使用 chrome.storage 的答案对我来说比其他人好得多。

https://stackoverflow.com/a/14009240/766115

它类似于 localStorage,但在弹出/背景和内容脚本之间工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 2011-02-17
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多