Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 抑制HTMLImageElement onerror_Javascript_Jquery - Fatal编程技术网

Javascript 抑制HTMLImageElement onerror

Javascript 抑制HTMLImageElement onerror,javascript,jquery,Javascript,Jquery,我正在运行一个脚本,该脚本根据几个条件动态加载图像。脚本事先不知道特定的图像源是否确实存在,因此需要在显示图像之前进行检查。为此,我将元素上的onerror处理程序替换为一个试图优雅地处理事件的函数 乍一看,这工作得相当好,但是即使我已经替换了事件,浏览器仍然会在控制台中审计404个错误,这是我不希望看到的。更糟糕的是,IE在状态栏中显示了臭名昭著的JS错误图标,这让我觉得相当尴尬 我试着用一种简单的方式来概括这个问题 基本上,我想抑制此元素的所有错误报告,这样控制台就不会被多余的错误输出淹没。

我正在运行一个脚本,该脚本根据几个条件动态加载图像。脚本事先不知道特定的图像源是否确实存在,因此需要在显示图像之前进行检查。为此,我将元素上的
onerror
处理程序替换为一个试图优雅地处理事件的函数

乍一看,这工作得相当好,但是即使我已经替换了事件,浏览器仍然会在控制台中审计404个错误,这是我不希望看到的。更糟糕的是,IE在状态栏中显示了臭名昭著的JS错误图标,这让我觉得相当尴尬

我试着用一种简单的方式来概括这个问题

基本上,我想抑制此元素的所有错误报告,这样控制台就不会被多余的错误输出淹没。

我知道我可以通过使用AJAX和服务器端脚本预取和评估HTTP头来解决这个问题,虽然从技术上讲这是一个可能的解决方案,但我更愿意避免。然而,虽然我在示例中只使用标准JS,但JQuery代码也是可以接受的


我曾尝试阅读事件规范,但由于web脚本仍然是混乱的ECMAScript、HTMLDOM、client、pixy dust和现在我们都喜欢讨厌的HTML5定义,因此它并没有让我变得更聪明。我得到的最接近的结果是(有趣的是,它甚至没有说明正确的函数参数),这表明让事件返回
true
将抑制错误,但这并没有真正起作用。

我相信,如果没有得到404错误,您无法检查图像链接是否中断/不存在。这实际上是关于链接断开的信息

您提到另一种方法是ajax来检查存在性

function UrlExists(url) {
  var http = new XMLHttpRequest();
  http.open('HEAD', url, false);
  http.send();
  return http.status != 404;
}

UrlExists('img_url');

但您仍然可以在控制台中获得404。

您是否在同一个域上加载图像?@dystroy。由于这是内部库的一部分,因此源文件的类型未知,但通常是本地文件。看起来它是重复的,不幸的是没有解决方案:\a,抱歉,我以为我之前已经检查过它是否已得到答复,但显然我有点马虎。无论如何,谢谢你。我想我将不得不忍受这些错误,并祈祷没有人费心检查控制台。:)实际上,我从来没有想过AJAX调用也会触发错误,所以感谢这一点。但是,由于我需要支持本地和跨域映像,因此我必须在服务器端进行实际检查(即AJAX加载通过cURL验证存在性的服务器脚本),这就是为什么我不想要该解决方案的原因。因此答案是否定的。。。你不能在前面做!是的,仅限于服务器端。
function UrlExists(url) {
  var http = new XMLHttpRequest();
  http.open('HEAD', url, false);
  http.send();
  return http.status != 404;
}

UrlExists('img_url');