在做照片故事模式的时候才发现的这个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; |
立即就正常了
波哥! 你这篇博文救了我。。
其实网上到处都有这个。。。
不知可否图片src替换之前先不要给图片加src的属性,这样请求可以减少~
当然可以~不过不加src属性会有一些问题,具体问题没有细研究过
一般我们用一个1×1像素的图片放在src上
这个是好老的bug了吧,IE会直接读缓存的图片,所以不会执行onload,我记得不加src会导致请求当前页面,可以src=about:blank