jquery - IE9 中 jQuery load() 事件未触发的问题

标签 jquery internet-explorer-9

我正在尝试预加载一些图像,并希望我的页面处于暂停状态,直到加载所有图像。所以我正在做的是这样的:

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/

相关文章:

javascript - 如何在 jQuery 中动态设置进度条值?

当通过 ajax 加载元素时,jQuery ui css 消失

jquery - 在 AJAX 函数中添加 CSS

html - 在 IE9 中更改边框颜色会导致布局崩溃

css - IE9 与 Opera、Firefox 与 Opera 的 CSS 定位差异

javascript - 如何隐藏具有重复数据属性的 child 的所有 parent

javascript - 如何将此 jQuery 代码转换为 ReactJS 代码(React、jQuery、HTML、CSS)

css - 在 IE 中对 CSS 伪元素使用 "attr()"

css - IE9通过内联样式将背景图像设置为 "none"

javascript - IE9 JS 无法获取属性值 'display' : object is null or undefined