我为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用户脚本,同时保留一些配置?
答案 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也可能是有益的阅读。