解决IE浏览器中图片onload事件失效问题
作者:微光时间:2026-10-28 12:08:59浏览:475
本文探讨在Web开发中获取图片宽高时,IE浏览器因缓存机制导致onload事件失效的问题。通过分析发现,先设置src后绑定onload会导致事件在绑定前已触发。解决方案是先绑定onload回调,再设置图片src属性,从而确保事件正常触发。
IE浏览器图片onload事件失效问题
在Web开发过程中,获取图片的宽高是常见需求。由于图片在加载完成前无法获取其实际尺寸,必须在加载完成后才能读取图片本身的宽高属性。例如:
代码如下:
var img = new Image();
img.src = "loading.gif";
img.onload = function(){
alert ( img.width );
};
问题原因与解决方案
这段代码看似没有问题,但在IE浏览器中会存在一个Bug。首次打开页面时正常,但第二次使用该方法时会出现问题,IE浏览器无反应,即使刷新页面也是如此。这是因为IE会缓存图片,第二次加载的图片并非从服务器下载,而是直接从缓冲区读取。先编写onload方法,再指定图片URL即可恢复正常。因此,并非IE未触发onload事件,而是从缓冲区加载的速度过快,导致在运行到img.onload之前,onload事件已经触发。这样处理即可解决问题。
代码如下:
var img = new Image();
img.onload = function(){
alert ( img.width );
};
img.src = "loading.gif";作者最新文章
JavaScript零基础入门:从环境搭建到运行第一段代码
2026-11-05 15:29:58
HTML链接中javascript:void(0)的作用及现代替代方案
2026-11-05 10:07:47
在线调试 JS 时怎么引入 jQuery 或 Vue 等第三方库
2026-11-05 08:53:56
原生JavaScript实现简易颜色选择器原理与代码
2026-11-03 23:22:19
JS原生表单序列化:FormData与URLSearchParams用法详解
2026-11-03 23:13:21
