2012-05-28 90 views
7

我正在研究Chrome扩展程序,该扩展程序需要保存一些信息(主要是标签信息),这些信息将在扩展程序的整个生命周期中存在(例如,因为用户在关闭浏览器之前开始使用它)。Chrome扩展程序保存数据

一个选择是使用localstorage,但localstorage只能保存字符串,这使我非常不舒服(因为我有一堆数据来保存 - 日期,URL,整数等)。我在寻找的是使用我自己的JavaScript对象,这些对象将在整个扩展期间生活。
现在的问题是,在JavaScript文件的脚本中定义这些对象会在用户每次单击浏览器动作时清除它们。换句话说,我有一个名为popup.html的浏览器动作,其中包含一个JavaScript文件(我想在其中保存我的对象),并且每次用户单击浏览器动作时,我在JS文件中定义的所有对象都将丢失,但我希望一切都能坚持下去。

我有什么选择让浏览器操作中的许多点击持续存在的数据,这不是本地存储?

+1

那么,你想记住当前会话的数据(直到浏览器关闭)?在这种情况下,只需在[后台页面](https://code.google.com/chrome/extensions/background_pages.html)中创建对象即可。 –

+0

或者你可以使用[indexedDB](https://developer.mozilla.org/en/IndexedDB/Using_IndexedDB) – gengkev

+0

这几天你可以使用chrome.storage它自动序列化/反序列化FWIW:http://stackoverflow.com/ a/24281357/32453 – rogerdpack

回答

2

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

如果你真的不想使用localStorage的也不是一个服务器端存储,使用索引资料:https://developer.mozilla.org/en/IndexedDB/Using_IndexedDB

+0

如果没有其他选项,我将回退到localStorage。你知道如果一个背景页面可以用来解决我的问题?我不能完全理解他们在手册中做了什么...... –

+0

您可以使用背景页面,但可能不需要。您的扩展的任何脚本都可以读写localStorage。 –

2

尝试使用Filesystem API的持久性存储。这比localStorage更可靠。一旦用户清除缓存,cookies等,localStorage将被清除。文件系统更可靠。

+2

即使用户明确删除了cookies等,为什么要坚持数据是一个好主意?你作为一个用户想要这样的行为吗?这是特别奇怪的,因为@Joel_Blum要求只在用户会话期间持续存在。 – steinar

+0

不幸的是,似乎FileSystem API没有被Chrome浏览器采用,并且基本上被LocalStorage“替换” – rogerdpack