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来更换图片
我是马丁的车夫,欢迎转发收藏!