微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 在ajax请求之后再次收听`$(window).load`

我正在加载另一个HTML页面的AJAX请求,然后将其插入当前页面的DOM元素中.

我通过AJAX获取页面包括对样式表的链接引用,以及必须从服务器加载的多个图像.

我希望在加载AJAX调用的所有资源(包括引用的样式表和图像)之后执行代码.
请注意,这些样式表和图像不是直接从AJAX加载的,而是由于从AJAX调用中插入HTML而加载的.

因此,我不是在寻找成功:回调,而是像另一个$(窗口).load(function(){…});在AJAX调用之后(我已经尝试再次收听$(window).load但没有成功.

如果您需要更多代码,请与我们联系.

解决方法:

检查是否已加载样式表很难做到 – 尤其是跨浏览器. This article建议在加载的样式表中使用已知规则更改元素,并轮询以检查其样式是否已更改为检测加载.

图像更容易,我希望它们需要更长的时间来加载,所以你可能只能检查图像加载.

success: function (html) {
    var imageloads = [];
    $(html).find("img").each(function () {
        var dfd = $.Deferred();
        $(this).on('load', function () {
            dfd.resolve();
        });
        //Image was cached?
        if (this.complete) {
            $(this).trigger('load');
        }
        imageloads.push(dfd);
    });
    $.when.apply(undefined, imageloads).done(function () {
        //images finished loading
    });
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐