惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
Blog — PlanetScale
Blog — PlanetScale
B
Blog
GbyAI
GbyAI
爱范儿
爱范儿
月光博客
月光博客
N
Netflix TechBlog - Medium
T
Tailwind CSS Blog
G
Google Developers Blog
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
WordPress大学
WordPress大学
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
腾讯CDC
MyScale Blog
MyScale Blog
V
Visual Studio Blog
The Cloudflare Blog
Microsoft Security Blog
Microsoft Security Blog
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - jack_Meng

2026年AI编程工具大全,33个主流工具 .NET 异常处理的"暗门":代码里被 catch 吃掉的异常,你依然能抓住它——FirstChanceException Visual Studio 插件 Gittoy , 我做了一个 vs 版的 gittoolbox 用 C 语言实现任务栏图标动画,支持使用表情包gif/webp 如何用0预算推广项目 开源的 Windows 桌面整理工具 被罚了500后,整个人都变老实了 提取网页表格,一键导出 CSV:一个 Bookmarklet 脚本就够了 从零搭建一个最小 AI Agent:Python 完整示例 + AI调用机制详解 CASIO卡西欧计算器的自检模式——2种自检方式 C#把字符串按每两个字符一组,组之间加空格 C#程序从指定路径或网络加载引用的DLL 设置程序PrivatePath,配置引用程序集的指定路径(分离exe和dll) .NET/WPF 程序密钥加密存储:使用 DPAPI 实现安全兼容 一线大厂的Git规范 一线大厂的数据库规范 Python自动化实战:常用的类库和使用场景 工控生态之展示与交互:怎么让工业软件不再"丑" 一个 Python 项目带你入门AI应用开发课程介绍----系列文章 开源好用的酷狗音乐播放器:VibeMusic PowerShell + C# 实现桌面文字提醒,类似于“激活Windows”的功能 【Python】2026动态文字壁纸,一键让你的桌面加上动态效果 Python 用 tkinter 实现在 Windows 上提示文本消息的实现(模拟安卓手机上的 Toast 效果) 用Python在Windows桌面弹出文字提示 在Windows桌面背景上添加自定义文字 常用AI提示词汇总 chrome浏览器,Google新标签页添加快捷图标 使用油候脚本,移除页面无法选择文字 高中免费电子教辅资料合集 Windows防火墙关闭445端口:Windows在防火墙禁用echo-reply(type 0)、time-exceeded(type 11)、destination-unreachable(type 3)类型的ICMP包
油候脚本中,使用GM_info对象,打印脚本信息
jack_Meng · 2026-07-25 · via 博客园 - jack_Meng

Tampermonkey(油猴脚本)获取并打印当前脚本名称

方法 1:直接用 GM_info(最标准、推荐)

// ==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 常用可读字段

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:打印本地脚本文件名

console.log('脚本本地文件名称:', GM_info.script.filename);

方法 3:封装成一行日志函数(直接调用)

function logWithScriptName(...args) {
    const name = GM_info.script.name;
    console.log(`[${name}]`, ...args);
}

// 使用示例
logWithScriptName('开始执行', new Date());
logWithScriptName('加载成功');

兼容性说明

  1. Tampermonkey、Violentmonkey、Greasemonkey 都支持 GM_info,无需添加 // @grant
  2. 如果旧版极个别环境失效,可以加授权(不影响):

最终效果示例

[测试脚本名称] 开始执行 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日志

补充说明

  1. 匿名函数判断

    如果调用处是匿名箭头函数,会显示 anonymous,比如:
(()=>{
    log('匿名函数内容');
})();
  1. 简化极简版(不想封装函数直接用)

const scriptName = GM_info.script.name;
const fnName = new Error().stack.split('\n')[2].match(/at (\w+)/)[1];
console.log(`[${scriptName}][${fnName}]`, '内容');
  1. 兼容性 

    Tampermonkey、Violentmonkey 全部兼容,不需要额外权限。