我的图像已加载完毕,但其高度和宽度尚未更新什么时候发生?

问题描述

| 我正在使用一个jQuery插件,该插件会在页面上的所有图片均加载完毕后调用回调。它检查
imageObject.complete
属性,并将处理程序绑定到
load
error
事件,以确定何时完成图像加载。 这很好用,但是我遇到的问题是,即使图像被认为已加载,当我检查图像或其包含
div
元素的
height
width
属性时,尺寸尚未更新。 这是一个例子: http://jsfiddle.net/RtnVx/12/ 在尝试访问
height
width
尺寸之前,如何确保已调整容纳元素的大小以适合图像? 编辑1:我清理并注释了jsfiddle中的代码,以使示例更易于理解。 编辑2:必须有一个基于缓存的竞争条件或差异,因为当我从另一台计算机上运行代码时,它可以正常工作(即,最高边距计算正确),实际上是不好的,因为它不一致。 Chrome,FWIW中的不一致现象更加明显。 另外,要明确一点,目标不是每次加载图像时都调用ѭ8。相反,应在通过AJAX
load
调用加载所有图像之后才一次调用
init
。     

解决方法

答案:http://jsfiddle.net/morrison/RtnVx/30/ 在图像加载完成之前,您无需致电ѭ11。我在加载的图像上创建了一个事件。 更新说明: 我剪出了您的jQuery插件。这太复杂了,我并不完全理解。 我当前的解决方案与插件一样,通过使用provides2ѭ事件来提供错误处理。 解决过程: 找到所有从ѭ14降序的
img
,并将该长度存储在
.data()
属性中,并存储一个变量以保持加载的数量。 在每个
img
上绑定
load
error
事件,以更新已加载图像的计数。 如果已加载/错误图像的数量达到图像总数,请致电
setTimeout()
,直到所有宽度均大于零,然后触发
init()
。