45

我为 Facebook 编写了一个 Greasemonkey/Tampermonkey 脚本。我需要存储数据以便以后检索它。为此,我使用了localStorage.

那工作得很好。但我注意到,几个小时后,我存储的所有数据都被自动删除了。可能 Facebook 本身会删除所有 localStorage 数据。

我寻找替代品。

  1. Cookies:不,当用户清除历史记录时,它将被删除。
  2. Web SQL:显然它被 w3.org 删除了。所以在不久的将来,我认为 chrome 可能也不会使用 web sql。

我想将数据存储在客户端系统中。我有什么选择?我应该使用 FileSystem 来存储数据吗?

4

1 回答 1

74

由于您正在使用Tampermonkey (Chrome) 和 Greasemonkey (Firefox)。继续使用GM_setValue(). 它不能被 Facebook 或任何其他网站清除。

它还具有跨域存储值的优点。

~~~
请注意,沼泽标准在FirefoxGM_setValue()上有些问题。它可能导致脚本实例在无效值上崩溃——因此最好使用序列化程序,例如GM_SuperValue来存储字符串以外的任何内容。即使是看起来很无辜的整数也可能导致默认值GM_setValue()崩溃。

目前,只有GM_setValue()、cookies、localStorage 和IndexedDB可用于两种浏览器上的持久数据。

IndexedDB 也可能会做你想做的事,但它没有那么容易使用GM_setValue().


更新:
如今,不要忘记使用:

  • // @grant GM_setValue
  • // @grant GM_getValue

此外,如果您确实使用 GM_SuperValue 库,您现在可以添加:

// @require http://userscripts-mirror.org/scripts/source/107941.user.js 

在元数据块中。(因为 userscripts.org 早已死去。)

于 2013-04-03T10:20:37.643 回答