Greasemonkey:更新时保持用户配置不变

时间:2015-04-02 23:27:07

标签: greasemonkey

我为Greasemonkey编写了一个用户脚本,需要一些用户配置。要指定脚本的行为方式,用户需要设置几个变量。

现在,脚本设置如下:

// ==UserScript==
// @name        My script
// @description A simplified example
// @include     http://www.example.com/
// @version     0.0.1
// @updateURL   https://www.example.com/myscript.meta.js
// ==/UserScript==

// Configuration
var config1 = "on";
var config2 = "off";

// Programs
[various functions that refer to the configuration variables]

我希望能够使用Greasemonkey's automatic updates更新脚本,同时保持用户的配置行不变。基本上,我不想强​​迫每个用户在每次更新后重做他们的配置。

是否有一个很好的方法来更新Greasemonkey用户脚本,同时保留一些配置?

1 个答案:

答案 0 :(得分:1)

您可能希望使用greasemonkey函数GM_getValue()和GM_setValue(),它们将存储保持这种状态的值,直到它们再次更改为止。该脚本可以根据用户需求设置值,并在需要时获取值。

特定GM功能需要在用户脚本的元数据中使用特殊授权:

// @grant         GM_getValue
// @grant         GM_setValue

具有GM值功能的代码可能如下所示:

var value = 18;
GM_setValue('dataName', value);
if (GM_getValue('dataName') == 18) ...

当您对脚本进行更新时,您可以先检查是否已写入GM_setValue,而不是覆盖GM_setValue设置的值:

var value = 18;
if (typeof GM_getValue('dataName') === 'undefined')
  GM_setValue('dataName', value);

要使用户能够控制这些设置,您可以注入一个显示数据库条目值的HTML界面,并允许设置它们。这种方法可以使这些设置免受脚本更新的影响(只要脚本不覆盖数据库值)。

此外,this question也可能是有益的阅读。