本文介绍如何利用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各个版本及谷歌、火狐浏览器中都支持。