您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A userscript library for adding support back to GM_ non async functions
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/534637/1581445/LegacyGMjs.js
/* LegacyGM.js - Version: 1.0.3 - Author: Haka - Description: A userscript library for adding support back to GM_ non async functions - GitHub: https://github.com/Psyyke/A.C.A.S/ */ async function LOAD_LEGACY_GM_SUPPORT() { if(typeof GM !== 'object') return; const noLegacyInfo = typeof GM_info === 'undefined' && typeof GM?.info !== 'undefined', onlyModernSet = typeof GM?.setValue === 'function' && typeof GM_setValue === 'undefined', onlyModernGet = typeof GM?.getValue === 'function' && typeof GM_getValue === 'undefined', onlyModernList = typeof GM?.listValues === 'function' && typeof GM_listValues === 'undefined', deleteValueExists = typeof GM?.deleteValue === 'function', openInTabExists = typeof GM?.openInTab === 'function'; if(noLegacyInfo) globalThis.GM_info = GM.info; if(!onlyModernList && !onlyModernGet && !onlyModernSet) return; const gmCache = {}; const gmFunctions = { GM_setValue: (key, value) => { GM.setValue(key, value); gmCache[key] = value; }, GM_getValue: (key, defaultValue) => { return key in gmCache ? gmCache[key] : defaultValue; }, GM_deleteValue: (key) => { GM.deleteValue(key); delete gmCache[key]; }, GM_listValues: () => { return Object.keys(gmCache); }, GM_openInTab: (url, options = false) => { if(openInTabExists) return GM.openInTab(url, options); return window.open(url, '_blank'); }, }; setInterval(async () => { const keys = await GM.listValues(); // Load existing for(const key of keys) { gmCache[key] = await GM.getValue(key); } // Remove old for(const key in gmCache) { if(!keys.includes(key)) { delete gmCache[key]; } } }, 1); // Define legacy functions for(const [name, func] of Object.entries(gmFunctions)) { if(typeof globalThis[name] === 'undefined') { Object.defineProperty(globalThis, name, { value: func, writable: false, configurable: false, enumerable: false, }); } } }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址