您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
[DEBUG] 信息显式化(注入版)
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/429525/951480/ExplicitMessage_Inject.js
(function() { try { const gmInclude = GM_getValue('ExplicitLog_Inject-include') const gmExclude = GM_getValue('ExplicitLog_Inject-exclude') let include = gmInclude ? new RegExp(gmInclude) : null let exclude = gmExclude ? new RegExp(gmExclude) : null // 日志 const logs = ['log', 'warn', 'error'] for (const log of logs) { const _ = console[log] console[log] = function() { const m = [arguments, log.toUpperCase()] if (match(m, include) && !match(m, exclude)) { explicit(arguments.length == 1 ? arguments[0] : JSON.stringify(arguments), log.toUpperCase()) } return _.apply(console, arguments) } } // 菜单 GM_registerMenuCommand('[DEBUG] 设置过滤器', () => { try { const sInclude = prompt(`【${GM_info.script.name}】\n\n设置匹配过滤器`, include?.source ?? '.*') if (sInclude) { include = new RegExp(sInclude) GM_setValue('ExplicitLog_Inject-include', sInclude) } const sExclude = prompt(`【${GM_info.script.name}】\n\n设置排除过滤器`, exclude?.source ?? '^LOG$') if (sExclude) { exclude = new RegExp(sExclude) GM_setValue('ExplicitLog_Inject-exclude', sExclude) } } catch (e) { explicit(e) } }) GM_registerMenuCommand('[DEBUG] 说明', () => window.open('https://gitee.com/liangjiancang/userscript/tree/master/script/ExplicitLog#使用说明')) } catch (e) { explicit(e) } })() /** * 显式地显示信息 * @param {*} msg 信息 * @param {string} [label] 标记 */ function explicit(msg, label) { alert(`【${GM_info.script.name}】${label ? `【${label}】` : ''}\n\n${msg}`) } /** * @param {*} obj 匹配对象 * @param {RegExp} regex 匹配正则表达式 * @param {number} [depth=5] 匹配查找深度 * @returns {boolean} 是否匹配成功 */ function match(obj, regex, depth = 5) { if (obj && regex && depth > 0) { return core(obj, depth, new Set()) } else { return false } function core(obj, depth, objSet) { for (var key in obj) { if (regex.test(key)) { return true } else { try { var value = obj[key] if (value) { if (typeof value == 'object' || typeof value == 'function') { if (regex.test(value.toString())) { return true } else if (depth > 1) { if (!objSet.has(value)) { objSet.add(value) if (core(value, depth - 1)) { return true } } } } else { if (regex.test(String(value))) { return true } } } } catch (e) { // value that cannot be accessed } } } return false } }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址