当前位置: 首页 > 知识库问答 >
问题:

javascript - 如何通过项目代码拦截控制台输出的报错资源问题?

颜实
2025-03-13
<img src="/不存在的图片.png" alt=""">

我通过监听error事件等等是能监听,但是浏览器默认报错资源404的问题还是在控制台打印出来了,而且是在我监听函数之前打印。

# 浏览器控制台默认打印(应该是 img 元素上的src资源问题) 
GET http://127.0.0.1:5500/不存在的图片.png 404 (Not Found)

# 这是我写的监听函数打印的,能监听到img src资源错误,但是阻止不了上面那条错误的打印。而且比他后输出
资源加载失败: http://127.0.0.1:5500/不存在的图片.png

共有2个答案

方永贞
2025-03-13

浏览器控制台中的网络请求404报错是浏览器默认行为,很难完全阻止。

可以尝试使用标签配置

<img src="/可能不存在的图片.png" alt="描述" onerror="this.onerror=null; this.src='/默认图片.png';">

使用 worker

// 注册Service Worker
if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/sw.js');
}

// sw.js
self.addEventListener('fetch', event => {
  if (event.request.url.endsWith('.png') || event.request.url.endsWith('.jpg')) {
    event.respondWith(
      fetch(event.request)
        .catch(() => {
          return fetch('/默认图片.png');
        })
    );
  }
});

还有就是重写浏览器控制台方法

const originalFetch = window.fetch;
window.fetch = function() {
  return originalFetch.apply(this, arguments);
};

但是这种方式千万别用于线上,太不可靠了,不同的浏览器支持的不一样,还有可能造成其他问题

谷梁承宣
2025-03-13

GET http://127.0.0.1:5500/不存在的图片.png 404 (Not Found)

像这样的提示是浏览器的默认行为,这个阻止不了

 类似资料:
  • 对资源请求的拦截代理是 Service Worker 的重要功能之一。Service Worker 在完成注册并激活之后,对 fetch 事件的监听就会开始生效,我们可以在事件回调里完成对请求的拦截与改写。下面这个简单的例子演示了如何拦截 http://127.0.0.1:8080/data.txt 的资源请求,并返回固定请求响应的过程: self.addEventListener('fetch'

  • 问题内容: 我在完全冻结JVM的应用程序中发现一个错误。产生的stacktrace将为开发人员提供有价值的信息,我想从Java控制台中检索它。JVM崩溃时,控制台被冻结,我无法再复制包含的文本。 是否可以将Java控制台直接通过管道传输到文件,或通过其他某种方式访问​​Java应用程序的控制台输出? 更新:我忘记提了,没有更改代码。我是手动测试仪。 更新2:这是在Windows XP下,它实际上是

  • 本文向大家介绍详解springmvc拦截器拦截静态资源,包括了详解springmvc拦截器拦截静态资源的使用技巧和注意事项,需要的朋友参考一下 springmvc拦截器interceptors springmvc拦截器能够对请求的资源路径进行拦截,极大的简化了拦截器的书写。但是,千万千万要注意一点:静态资源的放行。 上代码: 问题来了,在请求jsp页面的时候,你的静态资源的访问仍然会被自定义拦截器

  • 本文向大家介绍JAVA基础之控制台输入输出的实例代码,包括了JAVA基础之控制台输入输出的实例代码的使用技巧和注意事项,需要的朋友参考一下 ---恢复内容开始--- 输入需要用scanner机制 代码: 启用scanner机制 Scanner input = new Scanner(System.in); //String x= input.next(); //String x = input.n

  • 源代码控制系统(又称版本控制系统)让你高效地管理工程。他们对一个人是很有用的,对一个团队是至关重要的。它们追踪不同版本里的所有改变,以至于所有代码都未曾丢失,其含义可以归属于改变。有了源代码控制系统,一个人可以自信地写一些而半途而废的代码和调试的代码,因为你修改的代码被仔细地与提交的、官方的即将与团队共享或发布的代码分割开。 我挺晚才开始意识到源代码控制系统的好处,但现在即使是一个人的工程,我也不

  • 问题内容: 我需要编写一个简单的基于终端的程序, 使用包裹在BufferedReader中的FileReader从文件中读取一些文本。 将文本打印到控制台,用户应该可以对其进行修改。 输入Enter + S后,程序应读取修改后的文本并将其保存回原始文件。 总而言之,这个想法是为没有GUI的类Unix环境编写一个文本编辑器。 但是,我在步骤2和3中遇到问题。 System.out打印的所有文本都是不

  • 如何通过全局拦截特定格式的url跳转 重写window.location.href window.open等跳转方式的进行拦截

  • 尽管awsmobile cli具有启用和配置AppSync后端的功能,如: 它很容易以完全不相关的配置告终:它在us-west-2(俄勒冈州)中创建DynamoDB表,即使我的项目位于eu-Central-1(法兰克福)。它是通过默认的“事件”图形模式实现的。毕竟,它不会作为后端功能出现在MobileHub项目控制台上。 现在,我想做的事情是通过控制台向AWS MobileHub项目添加AppSy