Config_Getter

设置获取配置的APIs

目前为 2023-10-02 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/scripts/476522/1258887/Config_Getter.js

  1. // ==UserScript==
  2. // @name Config_Getter
  3. // @namespace Violentmonkey Scripts
  4. // @version 0.2
  5. // @grant unsafeWindow
  6. // @author axototl
  7. // @description 设置获取配置的APIs
  8. // ==/UserScript==
  9. 'use strict';
  10.  
  11. var register;
  12. (() => {
  13. const _APIs = ["GM_getValue", "GM_setValue", "GM_addValueChangeListener", "GM_registerMenuCommand", "GM_unregisterMenuCommand"];
  14. for (const val in _APIs)
  15. if (!(val in globalThis)) throw new Error("需要API权限!!!");
  16. function getVal(name, def) {
  17. let t = GM_getValue(name);
  18. if (null == t) {
  19. t = def;
  20. GM_setValue(name, t);
  21. }
  22. return t;
  23. }
  24. const boolean_prefix = ["❌已禁用", "✅已启用"];
  25. register = ({name, type, prompts, input: func = prompt, listener}) => {
  26. let val = GM_getValue(name);
  27. if (type === 'bool') {
  28. let cont;
  29. const reg = () => cont = GM_registerMenuCommand(boolean_prefix[val | 0] + prompts, () => GM_setValue(name, !val));
  30. GM_addValueChangeListener(name, (_1, _2, newval) => {
  31. val = newval;
  32. GM_unregisterMenuCommand(cont);
  33. reg();
  34. listener(name, newval);
  35. });
  36. } else if (type === "other") {
  37. const cont = GM_registerMenuCommand(prompts, () => GM_setValue(name, func()));
  38. GM_addValueChangeListener(name, (_1, _2, newval) => listener());
  39. }
  40. };
  41. unsafeWindow.register = register;
  42. });