火狐中Tampermonkey脚本失效需系统排查:先确认脚本加载(about:debugging检查Console日志),再核对@match规则、控制台报错(勾选“显示扩展错误”)、隔离验证最小代码,最后检查grant权限与API兼容性。

火狐浏览器中Tampermonkey脚本运行失败时页面无提示、控制台报错混乱,导致功能失效却找不到源头,必须通过系统化路径逐层定位问题。
确认脚本是否被正确加载
打开火狐地址栏,输入 about:debugging#/runtime/this-firefox → 点击「检查」按钮查看当前已启用的扩展 → 找到 Tampermonkey → 点击「调试」打开开发者工具。
切换到「Console」标签页,刷新目标网页,观察是否有类似 [Tampermonkey] Script 'XXX' loaded 的日志。没有该行说明脚本根本未触发加载,常见原因是 @match 或 @include 规则不匹配当前 URL。
在脚本编辑器中检查头部元数据,【@match 必须精确匹配协议+域名+路径结构,例如 https://example.com/* 无法匹配 https://www.example.com/】。
查看浏览器控制台原始报错
方法一:按 Ctrl+Shift+K(Windows/Linux)或 Cmd+Option+K(macOS)直接打开 Web 控制台 → 切换到「错误」过滤项 → 刷新页面。
方法二:右键页面 → 「检查元素」→ 切换到「控制台」→ 勾选「显示来自扩展的错误」(Firefox 120+ 默认关闭此项,不勾选会完全看不到 Tampermonkey 报错)。
注意:如果报错信息含 ReferenceError: $ is not defined,说明脚本依赖 jQuery 但未声明 @require 或未等待 DOM 加载完成;若出现 SyntaxError: illegal character,大概率是复制脚本时混入了不可见 Unicode 字符(如零宽空格),需全选重输。
隔离脚本执行环境验证
第一步:在 Tampermonkey 编辑器中,将整个脚本内容替换为以下最小验证代码:
// ==UserScript==<br>// @name Debug Test<br>// @namespace http://tampermonkey.net/<br>// @version 1.0<br>// @match *://*/*<br>// @grant none<br>// ==/UserScript==<br>alert("Loaded"); console.log("OK");
第二步:保存 → 刷新任意网页 → 若弹窗和日志均出现,说明 Tampermonkey 自身工作正常;若不触发,检查脚本是否被禁用(插件图标右键菜单里确认「启用此脚本」已勾选)。
第三步:逐步还原原脚本内容,每次添加 3~5 行后保存并刷新测试,直到报错复现——出问题的那几行就是根因所在。
检查 grant 权限与 API 兼容性
Firefox + Tampermonkey 组合下,部分 Chrome 专用 API(如 chrome.storage.local)不可用,必须改用 GM_setValue/GM_getValue。
若脚本含 @grant unsafeWindow,请确认未尝试访问已被 Firefox 沙箱拦截的属性(如 unsafeWindow.document.write 会静默失败);【使用 unsafeWindow 前务必加 try/catch,否则整段脚本中断】。
遇到 GM_xmlhttpRequest 超时或 0 状态码,检查是否遗漏 @connect 声明目标域名,例如 @connect api.example.com。











