IE下图片onload事件无效

在做照片故事模式的时候才发现的这个bug,其实这是一个很常见的问题,只是之前对图片的处理太少,没有碰到过。

故事模式实现是只加载当前浏览的照片和它下面的两张照片,加载照片的时候才会加载和渲染评论区,图片没有加载前会用一个一象素的图片占位,并用一个loading类将显示出一个loading背景图,判断在可视区的时候替换成真正的图片,图片加载成功后删除loading类。

问题出在最后面,测试的时候发现在IE下loading类无法删除,当时代码如下:

1
2
3
4
5
img.src = _src;
img.src = _src;
img.onload = function(){
   _con.delClass('loading');
}

网上找了一番,onload和定义src的语句应该换一下顺序,IE从缓存中取图片,onload根本不触发,opera也有这个毛病,正确代码修改如下

1
2
3
4
img.onload = function(){
   _con.delClass('loading');
};
img.src = _src;

立即就正常了

你可能感兴趣的文章

  1. 波哥! 你这篇博文救了我。。

  2. 其实网上到处都有这个。。。

  3. 不知可否图片src替换之前先不要给图片加src的属性,这样请求可以减少~

  4. 当然可以~不过不加src属性会有一些问题,具体问题没有细研究过

    一般我们用一个1×1像素的图片放在src上

  5. 这个是好老的bug了吧,IE会直接读缓存的图片,所以不会执行onload,我记得不加src会导致请求当前页面,可以src=about:blank

Leave a Reply


[ Ctrl + Enter ]