Chrome扩展程序如何保存数据?

7
我正在开发一个Chrome插件,需要保存一些信息(主要是标签信息),这些信息将在插件的整个生命周期内存在(例如,自用户开始使用它直到关闭浏览器)。
一种选择是使用localstorage,但是localstorage只能保存字符串,这使我非常不舒服(因为我有许多数据要保存-日期、URL、整数等)。我想要的是使用我的JavaScript对象,这些对象将在扩展程序的整个生命周期内保持活动状态。
现在的问题是,在某些JavaScript文件中定义这些对象将在每次用户单击浏览器操作时擦除它们。换句话说,我有一个名为popup.html的浏览器操作,其中包含一个JavaScript文件(我想在其中保存我的对象),每次用户单击浏览器操作时,我在JS文件中定义的所有对象都会丢失,但我希望所有内容都能持久化存储。
除了localstorage之外,我还有什么选项可以保留数据,使其在多次单击浏览器操作时持续存在?

1
那么,您想在当前会话中记住数据(直到浏览器关闭)吗?如果是这样,只需在后台页面中创建对象即可。 - Rob W
1
请使用 indexedDB - gengkev
1
现在你可以使用chrome.storage,它会自动进行序列化/反序列化。参考链接:https://dev59.com/K2Af5IYBdhLWcg3wyVJ1#24281357 - rogerdpack
你应该在扩展中使用chrome.storage,而不是其他类型的存储。 - fregante
3个回答

3

如果没有其他选择,我将退回到localStorage。你知道后台页面能不能解决我的问题吗?我无法从手册中完全理解它们的作用... - Joel Blum
你可以使用一个后台页面,但这可能并不是必需的。你的扩展中的任何脚本都可以从/写入localStorage。 - Denys Séguret

2

尝试使用文件系统API的持久化存储。这比localStorage更可靠。当用户清除缓存、cookie等时,localStorage将被清除。文件系统更加可靠。


2
即使用户明确删除了Cookie等,为什么持久化数据仍然是一个好主意?作为用户,您是否希望这种行为?这特别奇怪,因为@Joel_Blum要求在用户会话期间仅持续一段时间。 - steinar
不幸的是,FileSystem API 似乎没有被其他浏览器采用,基本上被 LocalStorage "替代"了。 - rogerdpack

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接