Chrome浏览器中window.onload执行时机与图片尺寸读取问题
作者:窗边听雨时间:2026-10-24 15:39:51浏览:633
本文探讨了在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)
作者最新文章
anime.js 快速入门:怎么引入库并编写第一个 DOM 动画
2026-11-05 14:22:43
在线JS解密后变量名仍乱码?结合浏览器DevTools调试还原
2026-11-04 20:26:01
怎么在浏览器中运行JavaScript代码并查看输出结果
2026-11-04 09:07:33
JS 获取屏幕分辨率:window.screen.width 与 height 用法
2026-11-04 08:52:48
为什么推荐用DOMContentLoaded代替window.onload初始化JS
2026-11-04 08:42:33
