admin 发表于 2018-6-9 01:17:53

【金易德网】利用onerro判断图片不存在时隐藏或者显示默认图片教程

在页面显示的时候,万一图片被移动了位置或者丢失的话,将会在页面显示一个带X的图片,很是影响用户的体验,非常的不规范,同时页面上也会抛出异常。
其实,可以这样处理:当图片不存在的时候,会触发onerror事件,我们可以在该事件中做一下补救的工作,比如:
1、让这个图片元素隐藏代码如下:
<img src="图片的地址" onerror="this.style.display='none'"/>2、用项目上默认的图片替换代码如下:
<img src="图片的地址"onerror="this.src='默认图片的url地址'"/>注意:如果使用不当,在IE内核的浏览器下会造成死循环。比如:当【默认图片的url地址】也加载不成功(比如网速比较慢的时候)或不存在的话,就会反复的加载,最后造成堆栈溢出错误。
因此, 需要用下面两种方法解决:
a、更改 onerror 代码为其它处理方式或者确保 onerror 中的默认图片足够小,并且存在。
b、控制onerror事件只触发一次,需要增加这句话:this.onerror=null; 增加后代码如下:

<img src="图片的地址"onerror="this.src='默认图片的url地址;this.onerror=null'"/>

3、以上方法适合<img>标签较少的情况,如果要处理的<img>标签比较多的话,可以做一个全局性的设置:可以写一个js方法,给每个标签添加error事件,当任何地方的图片不存在时都可以进行统一的处理。js代码如下:<script type="text/javascript">
<!–
function nofind(){
var img=event.srcElement;
img.src="默认图片地址";
img.onerror=null; 控制不要一直跳动
}
//–>
</script>引用js代码如下:<img src="图片1地址" onerror="nofind();" />
<img src=图片2地址" onerror="nofind();" />就一张图片引用就是<img src=图片的地址" onerror="nofind();" />




页: [1]
查看完整版本: 【金易德网】利用onerro判断图片不存在时隐藏或者显示默认图片教程