在Greasemonkey脚本中存储数据

15

GreaseMonkey有没有内置的功能可以按站点或页面存储数据?例如,假设您想要调整StackOverflow.com,以便在收藏列表中的每个问题上添加一个注释并根据该注释进行排序。 GreaseMonkey是否具有内置功能来存储这些注释?或者脚本是否可以自我修改,以便您只需定义一个数组或对象并将数据保存在那里?

3个回答

13

是的- GM_setValue

这个方法允许用户脚本作者在页面加载时保留简单的值。目前仅允许字符串、布尔值和整数作为数据类型。


还有一个名为super_gm_setvalue的库,允许在不同域之间存储所有类型的JavaScript对象。http://userscripts.org/scripts/show/107941 - Anderson Green

3

这些值被限制为简单的数据类型:字符串、布尔值和整数。这些值将被存储在Firefox首选项中(位于about:config),该首选项并非用于存储大量数据。

http://wiki.greasespot.net/GM_setValue

如果GM_setValue不适合您的需求,链接的问题/答案显示了其他很好的选择:GM_setValue的替代方案


2
自从Greasemonkey 1.13版本以后,每个用户脚本的值都保存在一个SQLite数据库中。 - Iulian Onofrei

1

需要强调的是,自从这个问题被提出以来,已经开发了新的API用于持久化数据存储。

本地存储

仅支持字符串值,非字符串值将被转换为字符串。您可以使用JSON或自己的格式来存储对象。

示例:

localStorage.my_script_value = JSON.stringify([1,2,3,4]);

var my_parsed_value = JSON.parse(localStorage.my_script_value);

IndexedDB

更复杂,但可以容纳更多数据 - 包括二进制大对象。请查看MDN文章获取详细信息。

示例:在MDN上查看此内容


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接