您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Proxy wrapper around GM storage API, with support for nested object by proxy.
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/488549/1335042/proxy-storage.js
// ==UserScript== // @name proxy-storage // @description Proxy wrapper around GM storage API, with support for nested object by proxy. // @version 0.0.1 // @namespace owowed.moe // @author owowed <[email protected]> // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @grant GM_listValues // @license LGPL-3.0 // ==/UserScript== function createGmProxyStorage({ get = GM_getValue, set = GM_setValue, deleteValue = GM_deleteValue, list = GM_listValues } = {}) { const storage = { get, set, deleteValue, list }; return new Proxy({}, { get(target, prop, receiver) { const value = storage.get(prop); if (isObjectOrArray(value)) { return makeNestedTargetProxy(value, prop, storage.set); } else { return value; } }, set(target, prop, newValue, receiver) { storage.set(prop, newValue); return true; }, deleteProperty(target, prop) { storage.deleteValue(prop); return true; }, ownKeys(target) { return storage.list(); }, has(target, prop) { return this.ownKeys(target).includes(prop); }, getOwnPropertyDescriptor(target, prop) { if (this.has(target, prop)) { return { enumerable: true, configurable: true, writable: false, value: this.get(target, prop) }; } }, }); } function isObjectOrArray(value) { return Array.isArray(value) || (typeof value == "object" && value != null); } function makeNestedTargetProxy(rootTarget, rootTargetProp, setter) { const set = (target, prop, value) => { target[prop] = value; setter(rootTargetProp, rootTarget); /* `rootTarget` reference will always get updated */ return value; }; const get = (target, prop) => { const value = target[prop]; if (isObjectOrArray(value)) { return new Proxy(value, { get, set }); } return value; }; return new Proxy(rootTarget, { get, set }); }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址