浏览器不提供一个特殊的事件来告诉你它知道图像大小的最早时间(在它完成下载图像之前)。您所能做的就是设置一个适当的负载处理程序来知道图像何时完成下载,然后知道它的大小。
在某些浏览器中似乎可以在加载完整图像之前稍微获取高度和宽度的蛮力方法是轮询加载图像是否存在.width
和.height
。在Chrome 中的这个 jsFiddle中,它有时在onload()
事件触发之前可用。我没有在其他浏览器中测试过这个。
如果您使用 onload 处理程序的路线,并且您的.src
特定图像标签位于页面的 HTML 中,那么确保在加载时收到通知的唯一方法是放置一个内联图像处理程序,以便从安装处理程序一开始:
<img src="xxx.jpg" onload="handleLoad(this)">
尝试从您的页面 javascript 附加事件处理程序可能为时已晚(在图像完成加载后)。浏览器不提供中间事件信息(例如当它知道大小但尚未完成下载图像时)。
对于动态创建的图像对象(您在 javascript 中创建的图像对象),您可以在创建对象时为 load 事件附加一个侦听器。
var img = new Image();
img.onload = function() {
// the image is now loaded here and height and width are known
};
img.src = "xxxx.jpg";
注意:使用动态创建的图像对象执行此操作时,您必须onload
在设置值之前设置处理程序.src
。在某些版本的 IE 中,如果图像被缓存,加载事件将在设置值时立即触发,.src
因此如果您.src
先设置然后设置处理程序,如果图像在浏览器缓存中onload
,您将错过该事件。onload