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

推荐订阅源

Cyberwarzone
Cyberwarzone
F
Fortinet All Blogs
Y
Y Combinator Blog
C
Check Point Blog
Latest news
Latest news
A
About on SuperTechFans
Spread Privacy
Spread Privacy
W
WeLiveSecurity
Know Your Adversary
Know Your Adversary
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
Recent Announcements
Recent Announcements
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 叶小钗
Last Week in AI
Last Week in AI
S
SegmentFault 最新的问题
T
Troy Hunt's Blog
T
Threatpost
Recent Commits to openclaw:main
Recent Commits to openclaw:main
博客园 - 司徒正美
Cloudbric
Cloudbric
J
Java Code Geeks
N
News | PayPal Newsroom
雷峰网
雷峰网
N
News and Events Feed by Topic
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
Recorded Future
Recorded Future
爱范儿
爱范儿
C
Cisco Blogs
P
Proofpoint News Feed
Hacker News: Ask HN
Hacker News: Ask HN
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog
O
OpenAI News
大猫的无限游戏
大猫的无限游戏
Webroot Blog
Webroot Blog
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
S
Secure Thoughts
博客园 - 【当耐特】
人人都是产品经理
人人都是产品经理
V
Vulnerabilities – Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
D
Darknet – Hacking Tools, Hacker News & Cyber Security
SecWiki News
SecWiki News
Martin Fowler
Martin Fowler
阮一峰的网络日志
阮一峰的网络日志
P
Privacy & Cybersecurity Law Blog

博客园 - jack_Meng

使用油候脚本,移除页面无法选择文字 高中免费电子教辅资料合集 Windows防火墙关闭445端口:Windows在防火墙禁用echo-reply(type 0)、time-exceeded(type 11)、destination-unreachable(type 3)类型的ICMP包 WinForm 双屏开发中屏幕适配与窗口定位 高考志愿填报之计算机类专业院校报考指南(2026版) WebSocket 快速入门教程(附示例源码) 自动生成项目工具--AutoBuilder,一键干掉80%的重复CRUD工作 C#/.NET/.NET Core优秀项目和框架2026年5月简报 在Win10系统中,默认使用照片查看器 C#实现控制台多区域输出 解决: 您的连接不是私密连接,您目前无法访问 因为此网站使用了 HSTS 小说下载 网页版时间,可全屏显示 个人笔记本连接公共WIFI的安全措施 追更 HelloGitHub 一整年,年度盘点 基于Rust开发的m3u8下载器M3U8Quicker:支持断点续传、边下边播 新写了个直播录制工具,可录制抖音快手斗鱼直播 bing 每日一图 --- 桌面壁纸 一款基于 C# 开发的 Windows 10/11 系统增强优化工具 适合个人的免费域名 语雀里存了三年的笔记,导出到了本地插件----YuqueOut C# 也能像 Python 一样写脚本 | .NET 10 构建基于文件的应用 js 双击页面 开始/暂停 页面滚动 使用bat批量给txt追加内容 Python摄像头监控:运动检测+自动录像+时间水印 【译】告别繁琐查错:认识下新的 Visual Studio Debugger Agent Workflow 好消息,在 Visual Studio 中可以免费使用 GitHub Copilot 了! [C#] 零依赖高性能跨平台 Web 胶水库 -- PicoServer 我的第一款独立产品--TaskManager 写 EF Core 查询,优化查询语句 最新.NET新手入门学习网站合集(2026更新版) Avalonia UI:.NET 跨平台桌面开发的“真香”选择 一个 txt 生成并保存 mp3的 Python 脚本 开源可商用 .NET Office 转 PDF 工具/库 - MiniPdf c# 常用且免费的 AI 编程工具 CodeGeeX,在vs 2019中使用的 AI 大模型工具 支持在 vs studio 2019中安装的 免费的 AI 辅助工具 .Net Framework 使用Lazy<T>延迟初始化对象 微软官网wpf例程源码下载地址 GitHub“神级”项目学习网址 开源协议介绍 Windows 窗体控件和等效的 WPF 控件 sql server backup database 爬取七猫中文网小说 ASP.NET Core 内存缓存实战 CliWrap —— .NET 最优雅的命令行交互库 .NET 高级开发 | 设计、实现一个事件总线框架 一个基于 .NET Core + Vue3 构建的开源全栈平台 Admin 系统 C#/.NET/.NET Core优秀项目和框架2026年3月简报--工作流引擎 C# 如何减少代码运行时间:7 个实战优化技巧
油候脚本中,使用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 全部兼容,不需要额外权限。