混油猴也有几年了,最近没事就泡问答互助区,发现很多新人遇到的问题其实都有共通的排查路径。Tampermonkey 全球用户早就破千万了,但真正会调试脚本的人其实不多,大多数人遇到脚本挂了就束手无策。
今天整理一份通用排查手册,按照这个流程走,90% 的常见问题基本都能自己定位到原因,不用等别人回复。
🔍 第一步:先确认最基础的问题(80% 的人栽在这里)
很多时候脚本不生效真不是代码的锅,是基础设置没搞对:
1. 先看脚本有没有启用:打开油猴管理面板,确认脚本开关是打开的,别装了忘了开
2. 确认匹配的网址对不对:看脚本头部的 @match 规则,是不是和当前页面域名对得上,很多脚本只在特定子页面生效
3. 刷新页面硬清缓存:Ctrl+F5 强制刷新,有时候浏览器缓存了旧页面,新脚本没加载上
4. 看是不是被广告拦截扩展拦了:uBlock、AdGuard 这类扩展有时候会误拦脚本的资源请求,临时关了试试
这四步走完,至少能排除一半的 "脚本用不了" 问题。
🧩 第二步:脚本冲突排查(多脚本用户必看)
如果你装了十几个甚至几十个脚本,冲突是迟早的事。常见现象:
- 单独开每个脚本都正常,一起开就出 bug
- 页面元素错乱、按钮点不动、功能时好时坏
排查方法很简单:二分法禁用
- 先禁用一半脚本,刷新看问题还在不在
- 如果还在,问题就在剩下启用的这一半里;如果不在了,问题就在刚禁用的那一半里
- 反复缩小范围,最后定位到冲突的两个脚本
.
最容易冲突的类型:都修改同一个页面元素、都劫持了同一个 XHR 请求、都注入了同名的全局变量。找到冲突后要么二选一,要么去脚本作者页反馈。
📋 第三步:看控制台报错(进阶必学)
这是最核心的排查手段,不会看控制台等于瞎猜:
- 按 F12 打开开发者工具,切到 Console(控制台)标签
- 刷新页面,看红色的报错信息
- 重点看报错里的文件名和行号,如果指向你的脚本 ID,那就是这个脚本抛的错
常见报错类型:
- $ is not defined:脚本依赖 jQuery 但没注入,或者注入顺序不对
- GM_xmlhttpRequest is not defined:油猴 API 没权限,看脚本头部有没有加 @grant 声明
- Cannot read properties of null:要操作的页面元素还没加载出来,脚本跑早了,需要加延迟或者用观察者
🌐 第四步:跨域和权限问题(写脚本的人最常踩)
很多自己写脚本的朋友,写的时候好好的,实际跑就挂,大概率是权限没搞对:
-
GM_ 系列 API 必须在头部声明 @grant:用了 GM_xmlhttpRequest 就必须加 // @grant GM_xmlhttpRequest,不然就是未定义
-
跨域请求必须用油猴 API:普通的 fetch 和 axios 跨站会被 CORS 拦,必须用 GM_xmlhttpRequest 走扩展通道
-
存储隔离问题:GM_setValue 和 localStorage 不是一回事,油猴存储是隔离的,不同脚本之间不互通
💬 闲聊两句
其实写油猴脚本真的很练前端基本功,DOM 操作、异步处理、正则匹配、网络请求,这些东西摸熟了,前端开发的底子也就差不多了。
我身边好几个靠写油猴入门的朋友,后来都转去做前端开发和软件测试了。现在信息技术大厂前端、后端、测试岗位缺口都不小,全国多地有岗,待遇不错,稳定性也有保障,有想看看正式工作机会的可以了解下:
https://jsj.top/f/o38ijj
走内推通道反馈比自己投快很多。
最后说一句,问答互助区的意义就是互相帮忙,提问的时候尽量把信息给全:什么浏览器、什么版本、装了哪些脚本、具体什么现象、控制台报什么错,信息越全别人越容易帮你定位。
大家还有什么补充的排查技巧?欢迎评论区一起交流,我整理到主楼里。