我正在尝试预加载一些图像,并希望我的页面处于暂停状态,直到加载所有图像。所以我正在做的是这样的:
var numPics = $('#bg img').length;
var picsLoaded = 0;
$('#bg img').load(function(){
picsLoaded++;
if (picsLoaded == numPics){
buildPage();
}
});
这在所有浏览器中都可以正常工作,除了(你猜对了)IE。 Internet Explorer 会以某种方式下载所有图片(我可以看到它们正在开发工具中加载),但只会随机触发 load
事件(每次刷新都会给我一个新数字,通常是将计算到大约一半的图像。我尝试了不同版本的 jQuery(我最初从 1.6.1 开始),并且还在这个网站上阅读了类似的问题,但尚未找到任何答案。
此外,它似乎不是与缓存相关的问题,因为破坏它(或将随机查询字符串附加到图像源)并没有产生任何影响。
最佳答案
尝试重新分配图像源以触发事件:
var numPics = $('#bg img').length;
var picsLoaded = 0;
$('#bg img').each(function(index) {
var img = $(this);
img.load(function(){
picsLoaded++;
if (picsLoaded == numPics){
buildPage();
}
});
img.attr("src", img.attr("src"));
});
关于jquery - IE9 中 jQuery load() 事件未触发的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7137737/