Chrome浏览器中window.onload执行时机与图片尺寸读取问题

作者:窗边听雨

时间:2026-10-24

浏览:632

本文探讨了在Chrome浏览器中,当window.onload被赋值为函数执行结果(如new init())时,可能导致图片尚未完全加载即执行代码,从而无法正确读取图片尺寸(offsetWidth返回0)的问题。通过修正为直接赋值函数引用或匿名函数,可确保在图片加载完成后获取真实尺寸,兼容IE和Firefox。

文章目录

Chrome中window.onload与图片尺寸读取问题

假设我们有一个如下结构的网页:


具体代码实现如下:

 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
</head>
<body>
<img src="/upload/2010-3/20100301192859481.gif" alt="" id="image">
<script type="text/javascript">
var init=function (){
var img=document.getElementById('image');
alert(img.offsetWidth);
} 
window.onload=new init();
</script>
</body>
</html>

在Internet Explorer和Firefox浏览器中运行上述代码,即使未显式指定img标签的width和height属性,也能正常显示图片的真实大小。然而,在Chrome浏览器中,此时alert弹出的offsetWidth值却为0。


若将window.onload赋值语句中的new init()修改为:


window.onload=init


或者修改为:


window.onload=function(){new init(){}}


则可以在图片完全加载后,正确读取并显示图片的尺寸信息。


转载请注明以下来源信息:


作者:北玉(tw:@rehawk)

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章