油候脚本中,使用GM_info对象,打印脚本信息
Tampermonkey(油猴脚本)获取并打印当前脚本名称
方法 1:直接用 GM_info(最标准、推荐)
javascript
// ==UserScript==
// @name 测试脚本名称
// @namespace http://tampermonkey.net/
// @version 1.0
// @description 获取脚本名
// @author You
// ==/UserScript==
(function() {
'use strict';
// GM_info 内置对象,不需要额外权限
const scriptName = GM_info.script.name;
const fullInfo = GM_info;
console.log('当前脚本名称:', scriptName);
console.log('脚本完整信息:', fullInfo);
})();
GM_info 常用可读字段
javascript
GM_info.script.name // 脚本名称(@name 内容)
GM_info.script.version // 版本号
GM_info.script.description // 描述
GM_info.script.author // 作者
GM_info.script.namespace // 命名空间
GM_info.script.filename // 脚本本地文件名(.user.js)
方法 2:打印本地脚本文件名
javascript
console.log('脚本本地文件名称:', GM_info.script.filename);
方法 3:封装成一行日志函数(直接调用)
javascript
function logWithScriptName(...args) {
const name = GM_info.script.name;
console.log(`[${name}]`, ...args);
}
// 使用示例
logWithScriptName('开始执行', new Date());
logWithScriptName('加载成功');
兼容性说明
- Tampermonkey、Violentmonkey、Greasemonkey 都支持
GM_info,无需添加// @grant; - 如果旧版极个别环境失效,可以加授权(不影响):
plaintext
// @grant GM_info
最终效果示例
控制台输出:
plaintext
[测试脚本名称] 开始执行 2026-07-25T...
打印方法名
如何还需要在日志中输出当前调用的方法名,可以使用如下
// ==UserScript== // @name 日志带脚本名+函数名工具 // @namespace http://tampermonkey.net/ // @version 1.0 // @description 控制台打印:[脚本名]-[函数名] 日志 // @grant GM_info // ==/UserScript== (function() { 'use strict'; // 获取脚本名称 const SCRIPT_NAME = GM_info.script.name; /** * 获取调用方函数名 * @returns {string} 函数名,匿名返回anonymous,全局调用返回global */ function getCallerFuncName() { const stack = new Error().stack; // 堆栈第二行是调用log函数的那一层 const match = stack.split('\n')[2]?.match(/at (\w+)/); return match ? match[1] : 'global'; } /** * 统一日志打印 * @param {...any} args 要打印的内容 */ function log(...args) { const funcName = getCallerFuncName(); console.log(`[${SCRIPT_NAME}]-[${funcName}]`, ...args); } // ========== 使用示例 ========== // 1. 全局直接调用 log('全局执行日志'); // 2. 在自定义函数内调用 function testFuncA() { log('函数A执行了', 123, {a:1}); } function testFuncB() { testFuncC(); } function testFuncC() { log('嵌套函数C日志'); } testFuncA(); testFuncB(); })();
打印效果示例
[日志带脚本名+函数名工具]-[global] 全局执行日志
[日志带脚本名+函数名工具]-[testFuncA] 函数A执行了 123 {a: 1}
[日志带脚本名+函数名工具]-[testFuncC] 嵌套函数C日志
补充说明
-
匿名函数判断
如果调用处是匿名箭头函数,会显示anonymous,比如:
javascript
(()=>{
log('匿名函数内容');
})();
-
简化极简版(不想封装函数直接用)
javascript
const scriptName = GM_info.script.name;
const fnName = new Error().stack.split('\n')[2].match(/at (\w+)/)[1];
console.log(`[${scriptName}][${fnName}]`, '内容');
-
兼容性
Tampermonkey、Violentmonkey 全部兼容,不需要额外权限。
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【关注我】。(●'◡'●)
因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/21900757
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!
浙公网安备 33010602011771号