2012-04-17 122 views
0

我正在写的Chrome打包应用程序。使用后台页面(而不是应用程序的主HTML页面)读取/写入localStorage值有什么优势?访问/写入Chrome应用localStorage的

当前用户似乎以我无法复制的方式丢失数据。现在,应用程序在主HTML页面的JavaScript中读写localStorage。更改应用程序以使用背景页面的JavaScript修复此问题?

+1

难道你的用户偶然被击中的localStorage的大小限制相关领域?至于你的问题,只要你保持安全并且没有用完存储空间就没有关系。一个缺点是,如果你使用localStorage的背景页面,你将不能够没有扩展名来访问其数据。 – 2012-04-17 16:17:20

+0

@AlexanderPavlov该应用使用Chrome的unlimitedStorage权限(http://code.google.com/chrome/extensions/manifest.html#permissions),但现在我已仔细查看该页面,似乎它甚至可能不适用于localStorage ...也许我应该使用indexedDB。废话。 – wavetree 2012-04-17 17:28:21

+0

事实上,unlimitedStorage不适用于本地存储,并且[错误已被标记WontFix(http://code.google.com/p/chromium/issues/detail?id=58985)。你应该使用[索引资料(https://developer.mozilla.org/en/IndexedDB)和/或[文件系统存储(http://www.html5rocks.com/en/tutorials/file/filesystem/),这取决于关于您正在存储的数据类型。编写我自己的应用程序时,我做出了完全相同的不幸发现。 – apsillers 2012-04-17 22:02:29

回答

0

无论设置的权限如何,LocalStorage都被限制为5兆字节。

当用户在chrome:// settings/clearBrowserData上检查“删除cookies和其他网站和插件数据”时,我相信特定站点和扩展localstorage文件都被删除。也许这就是你的用户“丢失”数据的方式。

使用背景页读/写localStorage的防止其他扩展您的数据,它可以发生于网站域名localStorage的文件,因为只有你的背景页面可以访问该文件的腐败。
虽然其他扩展确实可以叫你的背景网页,他们仍然要使用你的保存/加载函数来访问你的扩展localStorage的文件。

0

问题可能与localStorage容器的上下文有关。当从后台脚本运行时,您将保存您的扩展的localStorage。从内容脚本运行时,您将保存到localStorage用于该特定网站。由google.com上的内容脚本编写的localStorage.setItem('xx','yyy')不能被yahoo.com上的内容脚本的localStore.getItem('xx')调用读取