您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
设置获取配置的APIs
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/476522/1259956/Config_Manager.js
- // ==UserScript==
- // @name Config_Manager
- // @namespace Violentmonkey Scripts
- // @grant GM_getValue
- // @grant GM_setValue
- // @grant GM_addValueChangeListener
- // @grant GM_registerMenuCommand
- // @grant GM_unregisterMenuCommand
- // @author axototl
- // @license AGPL-3.0-or-later
- // @description 设置获取配置的APIs
- // ==/UserScript==
- 'use strict';
- let config = {};
- let register;
- (() => {
- // const _APIs = ["GM_getValue", "GM_setValue", "GM_addValueChangeListener", "GM_registerMenuCommand", "GM_unregisterMenuCommand"];
- // for (const val in _APIs)
- // if (!(val in globalThis)) throw new Error("需要API权限!!!");
- const boolean_prefix = ["❌(已禁用)", "✅(已启用)"];
- const int_family = ['uint', 'int'];
- config = {};
- register = ({name, default: def, type = "other", prompts, tips: ipt, input: func = prompt, callback: listener = Function.prototype}) => {
- let val = GM_getValue(name, def);
- config[name] = val;
- if (int_family.includes(type)) {
- const judge = (type === 'uint') ? (s => (s|0) < 0) : (()=>false);
- if (input === prompt) {
- input = () => {
- let p;
- do {p = prompt(ipt);} while(isNaN(p) || judge(p));
- return p;
- };
- }
- type = 'other';
- }
- if (type === 'bool') {
- let cont;
- const reg = () => cont = GM_registerMenuCommand(boolean_prefix[val | 0] + prompts, () => GM_setValue(name, !val));
- GM_addValueChangeListener(name, (_1, ov, newval) => {
- config[name] = val = newval;
- GM_unregisterMenuCommand(cont);
- reg();
- listener(name, ov, newval, cont);
- });
- reg();
- } else if (type === "other") {
- const cont = GM_registerMenuCommand(prompts, () => GM_setValue(name, func()));
- GM_addValueChangeListener(name, (_1, ov, newval) => (config[name] = newval, listener(name, ov, newval, cont)));
- }
- console.debug(type, name, "\nRegistered!");
- };
- })();