展开目录
ie8上Image.onload不触发问题
ie8bug
X
陈尼玛的博客
记录开发生涯的踩坑经历,用时间来验证成长
加载中

图片延迟加载通常使用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

相关文档

暂无

随便看看

  1. 记一次nodejs内存泄漏的排查经历

  2. 定长消息队列读写优化

  3. pip安装nltk临时使用国内源

  4. mac 终端运行后台程序如何在终端关闭时继续运行

  5. css3 文字渐变色

  6. nginx用域名来转发请求

  7. nodejs本地双向代理 端口转发

  8. jxa运动指令脚本

  9. python 用摄像头拍照并写入文件

  10. mongodb 批量修改字段语句

  11. webrtc泄漏本地ip信息

  12. dd备份/还原

  13. git 设置代理服务器

  14. mac搜索局域网内的主机

  15. 简易版事件封装

  16. 配置mysql ssl连接

畅言模块加载中