如何/在哪里将数据存储在除 localStorage 之外的 Chrome Tampermonkey 脚本中?

Posted

技术标签:

【中文标题】如何/在哪里将数据存储在除 localStorage 之外的 Chrome Tampermonkey 脚本中?【英文标题】:How/Where to store data in a Chrome Tampermonkey script other than localStorage? 【发布时间】:2013-03-21 17:55:09 【问题描述】:

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

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

我寻找替代品。

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

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

【问题讨论】:

这取决于数据的类型。对于原始二进制数据,您可以使用 data Blob API 。要缓存更多数据,您也可以使用 localStorage API。大多数浏览器都是compatible。 正如我提到的,我正在使用 localStorage,但每隔几个小时就会清除一次。 Tampermonkey,一个 Chrome 用户脚本和 Greasemonkey 是相关的,但不是一回事。这个问题对您使用的内容有点模棱两可。我假设你在 Chrome 上使用 Tampermonkey 扩展(你应该是,它比直接的 Chrome 用户脚本更好)。 我不知道它会有多大用处,但你可以看看这个。 goo.gl/CQA1h 【参考方案1】:

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

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

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

目前,只有 GM_setValue()、cookie、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 早已死去。)

【讨论】:

注 1:GM_SuperValue 在 Tampermonkey (Chrome) 上不存在,至少在 2017.01.24 chrome 55.0.2883.87 m(64 位)上。 注意 2:必须在用户脚本标题上添加 // @grant GM_setValue 才能使用魔法。 @Mithril,为了在 Tampermonkey 或任何其他兼容的脚本引擎中使用GM_SuperValue,您必须如图所示@require。你还需要两个 @grants。一种用于GM_setValue,一种用于GM_getValue 谢谢。但是有没有办法让全局存储空间可以跨多个脚本访问? @SGSVenkatesh,唯一的方法是托管您自己的数据应用程序或使用类似 Google 文档的 API。也就是说,将数据存储在多个脚本可以通过 http(s) 读取/写入的外部数据中。

以上是关于如何/在哪里将数据存储在除 localStorage 之外的 Chrome Tampermonkey 脚本中?的主要内容,如果未能解决你的问题,请参考以下文章

sessionStorage 和 localStorage 存储在哪里?

浏览器支持的Localstorage最大支持多大,数据是储存在哪里

NodeJS:在客户端将 JWT 存储在哪里? sessionStorage、localStorage 还是 cookie?

LocalStorage本地存储

如何查看localstorage

2019 年我应该在哪里存储我的 JWT,localStorage 真的不安全吗?