Greasemonkey:更新时保持用户配置不变
Greasemonkey: leaving user configuration intact while updating
我已经为需要一些用户配置的 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 用户脚本同时保持某些配置不变的好方法?
您可能希望使用 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 设置的值被覆盖:
var value = 18;
if (typeof GM_getValue('dataName') === 'undefined')
GM_setValue('dataName', value);
为了让用户能够控制这些设置,您可以注入一个 HTML 界面来显示数据库条目的值,并允许对它们进行设置。这种方法将使此类设置不受脚本更新的影响(只要脚本不覆盖数据库值)。
此外,this question 也可能是有益的阅读。
我已经为需要一些用户配置的 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 用户脚本同时保持某些配置不变的好方法?
您可能希望使用 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 设置的值被覆盖:
var value = 18;
if (typeof GM_getValue('dataName') === 'undefined')
GM_setValue('dataName', value);
为了让用户能够控制这些设置,您可以注入一个 HTML 界面来显示数据库条目的值,并允许对它们进行设置。这种方法将使此类设置不受脚本更新的影响(只要脚本不覆盖数据库值)。
此外,this question 也可能是有益的阅读。