分享你我的心得.
共乘一片美好网络.

img的onerror属性值

 img中的onerror事件可以在图片发生成错误触发一个事件,比如当图片加载失败时,用onerror为当前img指定一个默认图片. php程序员站

用法
<img src=”jz1024.gif” onerror=”javascript:this.src=’/noPic.gif’;” alt=”pic” />
但有时使用不当在ie内核的浏览器下会早成死循环.比如当图片加载不成功时触发加载默认图片,问题来了,如果默认图片也不存在或加载失败呢,在ie下就会反复的加载. php程序员站
造成以下的这种错误,如图
 
 

 
在实际的项目中,img的onerror属性值是很重要的,比如像广告位那里的广告,如果路径不对,或者服务器上的图片被删除的话,那么所显示的效果肯定不是我们想要的了。
 
      但是,这个属性似乎不被w3c所承认,因为我用火狐的校验工具,总是在那块地方提示有错误,不知道大家有没有解决的办法。
 
      同时也想说的是,慎用onerror属性值,用的不好,可能会弹出一个“stack overflow at line:0”的对话框。
 
      网上找了一下关于“stack overflow at line:0” 的说法,但是网上的说法是堆栈的益出,当然我不排除这种可能性,但是onerror这个属性值也有可能会导致这个问题。
 
      代码如下:
 
 
 
<script type="type/javascript">
 
function showOtherPic(obj){ 
 
obj.src=’jz1024.jpg’;
 
obj.onerror = null;
 
}
 
</script>
 
<img src="" onerror="showOtherPic(this)" />
 
 
 
       如果一不小心,将obj.src的路径写成了一个错误的地址,即找不到图片时,就会报”stack overflow at line:0“ ,假设首页的图片都是循环读取,当没有图片时,而onerror的图片地址又写错时,那真是杯具了,要不断地弹出这个框,直到图片结束为止,也可以写个判断,图片存在不存在,不过没什么大的必要!
 
 
 
说明:如果图片存在,但网络很不通畅,也可能触发 onerror。
 
解决方法:
 
第一种:去掉 onerror 代码;或者更改 onerror 代码为其它;或者确保 onerror 中的图片足够小,并且存在。
 
第二种:
 
<script type=”text/javascript”> 
 
<!– 
 
function nofind(){ 
 
var img=event.srcElement; 
 
img.src="/img/default.gif"; 
 
img.onerror=null; 控制onerror事件只触发一次 
 
 
//–> 
 
</script> 
 
<img src="/img/jz1024.jpg" onerror=”nofind();” />
赞(0)
未经允许不得转载:小叶白龙博客 » img的onerror属性值
分享到: 更多 (0)

评论 111

评论前必须登录!