0

我在将一些加载到绝对位置(之前由客户团队设置)的图像居中时遇到问题。

我已经将问题追溯到获取元素高度。

附加了一个图像,如果我尝试在之后立即获取它的高度,它会返回 0。我使用 setTimeout 进行了一些测试,并将其缩小到 17 毫秒(在我的系统上)延迟,以使高度正确返回。

在不使用 setTimeout 函数的情况下如何解决这个问题,运行 webapp 的每台计算机都会有不同的延迟时间?

4

1 回答 1

2

这 17 毫秒是您的浏览器下载和解析图像!

对图像的事件进行格式化load,因为浏览器在加载之前不知道图像有多大。例如:

var $img = $('<img src="' + image_source + '"/>');
// The browser might not load the image unless it is attached to the DOM
$('#image_container').append($img);
$img.on('load', function() {
    // Now we know how big the image is
    update_my_ui($img.height());
});

如果您不希望用户界面在文件加载时跳来跳去,您总是可以在屏幕外预加载图像。不幸的是,我听说在旧版浏览器中从缓存加载图像时,您可能不会触发加载事件,因此您可能需要进一步调查。

于 2013-10-16T20:13:23.893 回答