Greasy Fork is available in English.
简易的 Tampermonkey 脚本配置库
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/470224/1215817/Tampermonkey%20Config.js
// ==UserScript==
// @name Tampermonkey Config
// @name:zh-CN Tampermonkey 配置
// @license gpl-3.0
// @namespace http://tampermonkey.net/
// @version 0.1.0
// @description Simple Tampermonkey script config library
// @description:zh-CN 简易的 Tampermonkey 脚本配置库
// @author PRO
// @match https://pro-2684.github.io/*
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_registerMenuCommand
// @grant GM_unregisterMenuCommand
// ==/UserScript==
let wrapper = (validator) => {
return {
get: function (target, name) {
// Return stored value, if any
let value = GM_getValue(name);
if (value !== undefined) {
return value;
}
// Return default value
return target[name];
}
, set: function (target, name, value) {
if (validator === undefined || validator(name, value)) {
// Store value
GM_setValue(name, value);
// Return success
return true;
} else {
return false;
}
}, enumerate: function (target) {
// Return all keys in default_values
return Object.keys(target);
}
}
}
let config_menu_ids = [];
function register(config) { // Register menu commands based on given config
// Unregister old menu commands
let id;
while (id = config_menu_ids.pop()) GM_unregisterMenuCommand(id);
// Register menu commands
for (let [k, v] of Object.entries(config)) {
// console.log(k, v); // DEBUG
let id = GM_registerMenuCommand(`${k}: ${v}`, function () {
let new_value = prompt(`🤔 New value for ${k}:`, v);
if (new_value === null) {
} else {
config[k] = new_value;
// console.log(`Set ${k} to ${new_value}`); // DEBUG
if (config[k] === new_value) register(config);
else alert("⚠️ Invalid value!");
}
});
config_menu_ids.push(id);
}
}