我有以下代码来预加载图片:
preloader : function(images) {
var imgCount = images.length;
var counter = 0;
$.each(images, function(i, n) {
alert('hi');
// load each image
$("<img />").attr("src", n).load(function() {
counter++;
if(imgCount == counter) {
$('#loader').hide();
$('#wheel').show();
}
});
});
}
我这样打电话:
preloader(['../images/image1.png','../images/image2.png','../images/image3.png']);
它在Firefox中工作正常,但在IE中它不起作用。我收到所有3个警报,所以每个循环运行,但它只加载第一个图像。如果我只输出数组中的一个图像,我会进入最后的if语句并显示和隐藏div。但是不止一个图像就会出现。正如我所说,这在FF中运行良好,因此对于图像或图像丢失等路径不是问题。
有什么想法吗?我真的很难过。
答案 0 :(得分:1)
有相同问题的人详细解释:
http://www.mattfarina.com/2007/02/01/preloading_images_with_jquery
您需要延长img
元素的生命周期,直到图像实际加载为止。
答案 1 :(得分:1)
我一直使用这个梦幻般的插件:http://flesler.blogspot.com/2008/01/jquerypreload.html
$.preload([ 'red', 'blue', 'yellow' ], {
base:'images/colors/',
ext:'.jpg'
});
除了编码良好的事实之外,还存在预装图像的问题,即此插件处理的问题。