【问题标题】:Accessing/writing to Chrome app localStorage访问/写入 Chrome 应用程序 localStorage
【发布时间】:2012-04-17 16:12:40
【问题描述】:

我正在为 Chrome 编写一个打包的应用程序。使用后台页面(而不是应用程序的主 HTML 页面)来读取/写入 localStorage 值是否有优势?

目前,用户似乎正在以我无法复制的方式丢失数据。现在,该应用程序在主 HTML 页面的 JavaScript 中读取和写入 localStorage。将应用更改为使用后台页面的 JavaScript 可以解决此问题吗?

【问题讨论】:

  • 您的用户是否会碰巧达到相关域的 localStorage 的大小限制?至于您的问题,只要您保持安全并且不会耗尽存储空间,这并不重要。一个缺点是,如果您为 localStorage 使用背景页面,那么您将无法在没有扩展程序的情况下访问其数据。
  • @AlexanderPavlov 该应用程序正在使用 Chrome 的无限存储权限 (code.google.com/chrome/extensions/manifest.html#permissions),但现在我仔细查看了该页面,似乎它甚至可能不适用于 localStorage...也许我应该改用 indexedDB。废话。
  • 确实,unlimitedStorage 不适用于 localStorage,bug has been labeled WontFix。您应该使用IndexedDB 和/或FileSystem storage,具体取决于您存储的数据类型。在编写自己的应用程序时,我发现了完全相同的不幸发现。

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


【解决方案1】:

LocalStorage 限制为 5 MB,无论设置权限如何。

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

使用后台页面读取/写入 localstorage防止其他扩展程序损坏您的数据,这可能发生在站点域 localstorage 文件中,因为只有您的后台页面可以访问该文件。
虽然其他扩展确实可以调用您的后台页面,但它们仍然必须使用您的保存/加载功能来访问您的扩展本地存储文件。

【讨论】:

    【解决方案2】:

    问题可能出在 localStorage 容器的上下文中。从后台脚本运行时,您将保存扩展的 localStorage。从内容脚本运行时,您保存到本地存储是针对该特定网站的。由 google.com 页面上的内容脚本编写的 localStorage.setItem( 'xx', 'yyy' ) 无法被 yahoo.com 上的内容脚本调用的 localStore.getItem( 'xx' ) 读取

    【讨论】:

      猜你喜欢
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多