img图片地址加载失败,显示默认图片,使用onerror事件注意的事项和方法

1.在使用img标签时,因为图片地址不存在或者网络加载过慢后请求图片失败,会出现一个碎片图标,这就让用户非常不爽,这时我就需要改变这个美观度使用onerror事件去改变加载图片失败显示内容

2.借用img标签的onerror事件,img标签支持onerror 事件,在装载文档或图像的过程中如果发生了错误,就会触发onerror事件。可以使用一张提示错误的图片代替显示不了的图片。代码如下

<img src="images/logo.png" οnerrοr="javascript:this.src='images/logoError.png';">

3.当图片images/logo.png不存在时,将触发 onerror事件,而 onerror 中又为该 img 指定了images/logoError.png图片。也就是说图片images/logo.png存在则显示logo.png,图片images/logo.png不存在将显示 logoError.png。

*问题:如果images/logoError.png 也不存在,则会继续触发 onerror事件,导致死循环,故会出现打开网页时提示 Stack overflow at line: 0 错误。特别说明:如果图片存在,但网络很不通畅,也可能触发 onerror事件。

*解决方法1:控制它不循环,代码如下:

<img src="images/logo.png" οnerrοr="imgerrorfun();" />


<script type="text/javascript">
function imgerrorfun(){
var img=event.srcElement;
img.src="images/logoError.png";
img.οnerrοr=null; 控制不要一直跳动
}
</script>

*解决方法2:

使用js的Image对象获取这个图片的信息,判断一些属性是否正常,如果正常就使用这个图片作为默认图片,不正常则不显示

<img src="a.jpg" onerror="imgExists(this)" alt=""> <script> function imgExists(e){ //默认图片 var imgUrl = "https://account.acgxt.com/public/images/default.png"; var img = new Image(); img.src=imgUrl; //判断图片大小是否大于0 或者 图片高度与宽度都大于0 if(img.filesize>0||(img.width>0&&img.height>0)){ e.src = imgUrl; }else{ //默认图片也不存在的时候 } } </script>

//也可以使用XMLHTTP远程判断图片是否存在。然后根据远程获取的是404还是200来更换图片

 

猜你喜欢

转载自www.cnblogs.com/Allen-project/p/12169718.html