由于异步图像加载,图像的宽度和高度为零

时间:2012-05-22 07:34:22

标签: javascript jquery asynchronous

我有一个很长的base64类型字符串,我想设置为图片的src

 $('#img').attr('src',base64data)
 console.log('height - ' $('#img').height());
 console.log('width - ' $('#img').height());

我似乎正在为0height取回width。当然如果我等一会儿 然后我会得到适当的高度。

事情是.attr()没有回调,如果设置src属性而没有获得0,我将如何获得高度和宽度。 (我想我得到0因为Jquery的变化是异步发生但我不能太确定)

1 个答案:

答案 0 :(得分:11)

$('#img').one('load', function() {
   console.log('height - ' $(this).height());
   console.log('width - ' $(this).width());
})
.attr('src',base64data);

/* if this image is already cached load event couldn't be fired:
 * then look for "complete" status and trigger load event 
 */
if ($('#img').get(0).complete) {
   $('#img').trigger('load');
}

在获得widthheight之前,您需要等待load事件。 请注意,我使用了one()方法,因为如果图片已经过缓存,则不应触发load事件两次