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