火狐浏览器中Tampermonkey脚本已启用但无反应,主因是权限链路中断:需手动开启about:addons中的“允许运行用户脚本”开关;严格声明@grant权限(如GM_xmlhttpRequest);调整file://路径写法并修改about:config中security.fileuri.strict_origin_policy为false;校验@match规则匹配标准化URL;隔离uBlock Origin等冲突扩展。

火狐浏览器中Tampermonkey脚本明明已启用,但打开目标网页毫无反应,或控制台报出GM_xmlhttpRequest未定义、@require file:// 失败、ReferenceError等错误——这类问题不是脚本写错了,而是火狐环境与Tampermonkey的协作链路在某个环节断开了。
确认插件是否真正获得执行权限
Firefox对用户脚本的管控比Chrome更严格,从91版本起引入了独立的“用户脚本执行开关”。即使Tampermonkey图标亮着、脚本列表里开着绿灯,若该开关未开启,所有脚本都会静默失效。
打开 about:addons → 点击右上角齿轮图标 → 选择「扩展和主题设置」→ 找到「允许运行用户脚本」选项并确保勾选。
这一步【必须手动开启,且不会自动继承自旧版配置】。很多用户从旧版Firefox升级后,这个开关默认是关闭的,导致所有脚本集体“失声”。
检查脚本元数据中的 @grant 声明是否完整
Firefox下Tampermonkey对API权限校验极严:只要脚本用了GM_*系列函数,就必须在元数据块中显式声明对应@grant,漏一条就会报ReferenceError。
方法一:逐项核对常用API对应grant
GM_setValue / GM_getValue → @grant GM_setValue GM_getValue
GM_xmlhttpRequest → @grant GM_xmlhttpRequest
GM_getResourceText → @grant GM_getResourceText
方法二:偷懒但有效——直接写 @grant unsafeWindow(仅限调试阶段)
这会绕过大部分权限拦截,让脚本能跑起来,但【不推荐上线使用,存在安全风险】。确认功能正常后,再逐个替换为最小化grant声明。
修复本地JS文件加载失败(file:// 协议报错)
Firefox默认完全禁止扩展通过file://协议读取本地文件,哪怕你已在Tampermonkey设置里勾选“允许访问本地文件”,也需额外两步授权。
第一步:在Firefox地址栏输入 about:config → 搜索 security.fileuri.strict_origin_policy → 双击设为 false。
第二步:在Tampermonkey脚本头部,将 // @require file:///D:/lib/utils.js 改为三段式路径写法:// @require file:///D:/lib/utils.js?ver=1。
加查询参数是为了强制绕过Firefox对file://资源的缓存锁定——否则改了JS文件内容,脚本仍加载旧版本,报错信息永远滞后。
排查脚本匹配规则是否被Firefox URL标准化干扰
Firefox会对URL做更激进的标准化处理:自动解码URI组件、移除末尾斜杠、合并重复路径分隔符。而Tampermonkey的@match规则是按原始字符串匹配的,稍有不慎就失之交臂。
① 打开目标网页 → 按Ctrl+L选中地址栏 → Ctrl+C复制完整URL(注意保留所有编码字符,如%20而非空格)
② 进入Tampermonkey编辑页 → 将复制的URL粘贴进@match字段,用通配符兜底:// @match *://*/*example.com*/edit*
③ 保存后,按F12打开开发者工具 → 切换到Console → 刷新页面 → 观察是否有"Script matched but not injected"提示。若有,说明匹配成功但注入被阻断,问题转向CSP或权限层。
禁用其他扩展进行冲突隔离
Firefox中uBlock Origin、Privacy Badger、Decentraleyes三类扩展与Tampermonkey的DOM注入时机高度重叠,极易发生竞态冲突。
临时禁用全部扩展 → 仅保留Tampermonkey → 刷新目标网页测试脚本是否生效。
若此时恢复正常,说明存在扩展冲突。逐个启用其他扩展,每启一个就刷新一次页面,直到脚本再次失效——最后启用的那个扩展就是罪魁祸首。
对uBlock Origin用户,可进入其仪表盘 → 点击「我的过滤器」→ 添加规则:example.com##script:has-text(Tampermonkey)(将example.com替换成实际域名),阻止其误杀油猴注入节点。











