怎样替换为默认图片,加载图片失败

By柏小白

怎样替换为默认图片,加载图片失败

img元素加载图片失败,则变成一个小图标,让页面变得难看。此时如何替换为默认图片?
onerror属性
img元素自带onerror属性,加载失败时,触发error事件

<img src="http://yongqing.is-programmer.com/posts/image.gif" onerror='this.src="http://yongqing.is-programmer.com/posts/default.gif" />

jquery.error函数
jquery提供对应的事件处理函数

$('img').error(function(){
    $(this).attr('src',"default.gif");
})

jquery.one函数
使用上面两种方法,假如默认图片也加载失败,则变成死循环. 此时可使用one()绑定事件

$("img").one("error", function(e){
     $(this).attr("src", "default.gif");
});

另外error事件,不支持冒泡,jquery.delegate函数捕捉不到error事件。
原生JS方法:

<script type="text/javascript">
  t = document.getElementsByClassName("defaultImg");
  for(i = 0; i < t.length; i++){
      t.item(i).onerror = function(){
        this.src = "test.gif"
      }
    }
</script>
//采用 className 是为了更好的适应页面,不是每个img我们都要这样做的,甚至不同地方的img
//我们要显示不同的默认图片。(采用img同样做法)。
//采用id则是犯了错误,id 导致只会拿到第一个id相符的。
//此代码经过测试在 非IE 的browser上正常工作。
 
//为了兼容IE个废物,请使用以下代码:
 
<script type="text/javascript">
  t = document.getElementsByTagName("img");
  for(i = 0; i < t.length; i++){
      t.item(i).onerror = function(){
        if(this.id =="defaultImg"){
            this.src = "test.gif";
            this.onerror = null;
          }
      }
    }
</script>

 

About the author

柏小白 administrator