我编写了一个Greasemonkey脚本,使用GM_SetValue
保存首选项。有时,如果脚本存在问题,我建议用户通过删除脚本并重新安装来重新加载脚本。这会破坏脚本的存储值,这对用户来说非常不方便。
有更好的方法来存储这些信息吗?我需要存储的状态是每页,使用URL作为GM_SetValue
的键,如果这有任何区别。
答案 0 :(得分:3)
是的,您可以复制存储GM_setValue
数据的SQLite文件并保留该信息。
要查找数据:
gm_scripts
文件夹。.db
例如,如果脚本命名为:// @name _Zombie GM_setValue fun
_Zombie_GM_setValue_fun.db
如果将此文件移动或复制到安全位置,则对脚本执行任何操作,然后将文件复制回来;您的数据将被保留。 (只要您不更改脚本的@name
或@namespace
。)
你不必在执行此操作时关闭Firefox,但我会 - 防止边缘情况发生。
示例脚本:
// ==UserScript==
// @name _Zombie GM_setValue fun
// @include https://stackoverflow.com/questions/28498610/*
// @grant GM_getValue
// @grant GM_setValue
// ==/UserScript==
var lastVal = GM_getValue ("LastValue");
var newVal = prompt (
'The last value was "' + (lastVal || "{not set}") + '". Enter a new value:',
''
);
if (newVal)
GM_setValue ("LastValue", newVal);
测试顺序:
The last value was "{not set}". Enter a new value:
。Save me
。The last value was "Save me". Enter a new value:
_Zombie_GM_setValue_fun.db
复制到安全的地方。"{not set}"
。_Zombie_GM_setValue_fun.db
复制回gm_scripts
文件夹,覆盖较新的_Zombie_GM_setValue_fun.db
(如果有)。Save me
的页面。