今天下午做一个网页的样板的时候,偶然发现的一个存在于Chrome中的小问题。

如果一个<img>标签的高度是自动的(height:auto),那么在Chrome中,是无法在window.onload事件执行之前获取到它的高度的。

这句话说得有点绕。实际情况是,我希望能在图片被加载之后,立刻获得它自动的高度,然后无论是将JS语句写在HTML代码的末端,或者使用jQuery提供的ready事件,都无法获取到这个高度。

解决方法后来在stackOverflow里面找到了,如前文所讲,把获取高度的代码写入window.onload事件中就可以了。当然,另外一种解法更加简单,就是给<img>写上height属性,这确实是一种不错的习惯。

 

值得一提的是,我试过FF,Chrome和IE10,而这个问题却只会存在于Chrome中。我想这是和网页渲染的顺序有关系,根据网上所查资料显示,因为 ready事件不属于DOM的标准事件,它是由jQuery调用DOMContentLoaded事件来实现,而这个事件却不是所有浏览器都支持的。若浏览器不支持该事件,我相信jQuery会用别的方法去模拟出这个效果。

我怀疑Chrome的小问题便是源于它不支持DOMContentLoaded事件,而jQuery的模拟过早的执行了ready事件中包裹的代码了。

当然这只是怀疑,目前我简单的研究就到此为止了,以后会找个时间往深里研究下。