img标签src属性,图片资源加载不到,显示裂图,onerror处理显示默认src,防止重复加载抖动

加载图片用的img标签,它的src属性指向图片的外链地址。

  • 如果外链图片资源存在,就会正常显示;
  • 如果不存在,就会显示裂图,影响布局,降低用户体验。

解决方法:
1>. 使用alt属性,添加资源加载失败的文字说明,效果并不好,不推荐:

图片加载失败提示,效果并不好  

2>. 使用onerror事件,如果加载失败做什么处理:

  • 示例1:隐藏
图片加载失败提示,效果并不好 
  • 示例2:this.src赋值默认src,但这个src图片 一定要存在,否则没卵用
图片加载失败提示,效果并不好 

这样做会有一个问题,浏览器会重复的加载这个不存在的src资源,导致即使进入了onerror处理,img会一闪一闪,裂图与默认图之间抖动切换

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

两种方法解决:

1.更改 onerror 代码为其它处理方式,例如占位隐藏 或者 确保 onerror 中的默认图片足够小,并且存在
2.控制onerror事件只触发一次,需要在onerror加上这行代码this.onerror=null; 如下:

 
  • 注意单双引号的嵌套或转义
  • 不要把写在默认src中,这个有点坑,我把分号写在src中,导致默认图也不显示,其实本意是将两行代码隔开。

完整代码:


你可能感兴趣的:(img标签src属性,图片资源加载不到,显示裂图,onerror处理显示默认src,防止重复加载抖动)