You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Firefox的不存在页面(默认错误页)运行Tampermonkey脚本?

在Firefox默认错误页运行Tampermonkey脚本的解决方案

Firefox的“页面未找到”错误页本质是内置的about:neterror页面,地址栏显示的是你输入的域名,但实际页面的真实URL属于about协议——这就是你之前脚本无法触发的核心原因:Tampermonkey是根据页面真实URL匹配注入,而非地址栏显示的内容。

以下是可行的实现方案:

1. 调整脚本的匹配规则与注入时机

在脚本元数据中,将@match改为匹配Firefox错误页的真实URL模式,并设置更早的注入时机:

// ==UserScript==
// @name         目标错误页脚本
// @namespace    tampermonkey-scripts
// @version      0.1
// @match        about:neterror*
// @run-at       document-start
// ==/UserScript==
  • @match about:neterror*:确保脚本会注入到所有Firefox网络错误页
  • @run-at document-start:让脚本在页面开始加载时就注入,避免错过错误页的渲染时机

2. 过滤目标域名

为了避免脚本在所有错误页运行,需要从错误页的URL参数中提取原始请求的域名,仅在目标域名的错误页执行逻辑:

(function() {
    'use strict';

    // 从错误页URL参数中获取原始请求的完整地址
    const getOriginalRequestUrl = () => {
        const urlParams = new URLSearchParams(window.location.search);
        return urlParams.get('u');
    };

    const originalUrl = getOriginalRequestUrl();
    if (!originalUrl) return;

    // 定义你需要匹配的目标域名列表
    const targetDomains = ['not.existing.yahoo.com'];
    const urlObj = new URL(originalUrl);

    // 仅在目标域名的错误页执行后续逻辑
    if (!targetDomains.includes(urlObj.hostname)) return;

    // 你的初始化函数
    async function init() {
        console.log("TEST: 脚本已在目标错误页运行");
        // 这里添加你的自定义逻辑,比如修改错误页内容、添加交互等
    }

    // 轮询等待错误页DOM加载完成后执行初始化
    const waitForDOM = setInterval(() => {
        if (document.body) {
            clearInterval(waitForDOM);
            init();
        }
    }, 100);
})();

关键说明

  • Firefox错误页的uURL参数存储了原始请求的完整地址,通过它可以精准过滤目标域名
  • 错误页的加载逻辑和普通网页不同,无需依赖window.load事件,轮询DOM的方式更可靠

内容的提问来源于stack exchange,提问作者HeartOfGermany

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 11:02:32