JavaScript利用onerror处理图片加载失败与防死循环

作者:小括号

时间:2026-10-29

浏览:476

本文介绍如何利用JavaScript的onerror事件处理图片加载失败的情况。通过隐藏图片或替换为默认图片提升用户体验。重点解决IE浏览器中因默认图片加载失败导致的onerror死循环问题,推荐使用this.onerror=null或确保默认图片存在且足够小。

文章目录

JavaScript onerror处理图片加载失败

JavaScript代码


 //图像加载出错时的处理
function errorImg(img) {
img.src = "默认图片.jpg";
img.onerror = null;
}

html代码


<img width="32" height="32" src="1.jpg" onerror="errorImg(this)" />

为了美观当网页图片不存在时不显示叉叉图片

当页面加载图片时,若图片路径变更或文件丢失,浏览器通常会显示一个带有叉号的占位图标,这严重影响了用户的浏览体验。即便设置了alt属性提供文字提示,效果也较为有限。 实际上,可以通过JavaScript进行优化:当图片加载失败时,会触发onerror事件,我们可以在该事件的回调函数中执行补救措施,例如:

1、让这个图片元素隐藏:


为了美观当网页图片不存在时不显示叉叉图片 src="图片的url地址" alt="图片XX" onerror="this.style.display='none'"/>

2、用默认的图片替换:


为了美观当网页图片不存在时不显示叉叉图片 src="图片的url地址" alt="图片XX" onerror="this.src='默认图片的url地址'"/>

注意:如果使用不当,在IE内核的浏览器下会造成死循环。比如:当【默认图片的url地址】也加载不成功(比如网速比较慢的时候)或不存在的话,就会反复的加载,最后造成堆栈溢出错误。

因此, 需要用下面两种方法解决:

a、更改 onerror 代码为其它处理方式或者确保 onerror 中的默认图片足够小,并且存在。

b、控制onerror事件只触发一次,需要增加这句话:this.onerror=null; 增加后如下:


为了美观当网页图片不存在时不显示叉叉图片 src="图片的url地址" alt="图片XX" onerror="this.src='默认图片的url地址;this.onerror=null'"/>

经测试,上面的方法在IE各个版本及谷歌、火狐浏览器中都支持。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章