- 问题显性
img标签src赋值后,考虑优化图片资源不加载时赋值默认图,因此用了onerror事件,在onerror事件里给src赋值默认图。 结果在各大主流浏览器上均正常显示图片,但在IE11上显示默认图!!! 去掉 onerror事件后图片正常显示 说明图片资源没问题,但是在IE上就会进入onerror方法,这个可能就是IE的渲染机制跟其他浏览器的渲染机制存在区别和差异,具体在哪里,无从得知,哪位前辈大佬有研究的可以解惑下,万分感谢。
- 临时解决方案
慎用onerror方法,在onerror事件中加一层判断覆盖,判断图片资源是否正常,若资源正常则什么都不做,若资源不正常则赋值默认图。
- 贴代码
<img src="fly.jpg" onerror="imgExists(this)" alt="fly">
<script>
function imgExists(this){
var url = this.src;
var img = new Image();
img.src=url;
//判断图片大小是否大于0 或者 图片高度与宽度都大于0
if(img.filesize>0||(img.width>0&&img.height>0)){
console.info("every things is ok");
}else{
this.src = "default.jpg";
console.ino("process bad");
}
}
</script>