图片延迟加载通常使用Image
这个东西来实现,但它的onload特性在各种ie浏览器上的表现都很不正常,尤其是ie8!
以下是预加载的代码:
a=new Image
a.src='/a.jpg'
a.onload=function(){alert('loaded')}
这样写在一部分现代浏览器上会正确运行,但ie浏览器可能就不会触发onload,因为设置了src之后,浏览器就开始加载图片缓存了,如果加载图片缓存比绑定onload之前完成,那么onload就不会被触发。
所以改了以下变成这样的代码:
a=new Image
a.onload=function(){alert('loaded')}
a.src='/a.jpg'
你以为这样就正确了?不,ie8依然可能
不触发onload。实测,同时很多个图片进行加载时,ie8有部分图片还是会错过onload时机。
归根到底还是ie8上触发的时机太早了,写在后面也不管用,最终手段:加定时器
a=new Image
a.onload=function(){alert('loaded')}
setTimeout(function(){
a.src='/a.jpg'
},navigator.userAgent.match(/msie\s*8/i)?1e2:1)
这样总算搞定了ie8
相关文档
暂无
随便看看
畅言模块加载中