Javascript 再次收听`$(窗口)。在ajax请求后加载`

Javascript 再次收听`$(窗口)。在ajax请求后加载`,javascript,html,ajax,Javascript,Html,Ajax,我正在加载另一个HTML页面的AJAX请求,然后将其插入到当前页面的DOM元素中 我通过AJAX获得的页面包括对样式表的链接引用,以及必须从服务器加载的多个图像 我想在AJAX调用加载所有资源后执行代码,包括引用的样式表和图像。 请注意,这些样式表和图像不是直接从AJAX加载的,而是从AJAX调用中插入HTML后加载的 因此,我不是在寻找成功:回调,而是像另一个$(window.load)(function(){…})在AJAX调用之后(我尝试再次收听$(窗口)。加载,但没有成功 如果需要更多代

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

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

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

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


如果需要更多代码,请告诉我。

检查样式表是否已加载很困难,尤其是跨浏览器。建议在加载的样式表中使用一个将由已知规则更改的元素,并轮询以检查其样式是否已更改以检测加载

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

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
    });
}

回答得很好!我还没有将其标记为已接受,因为我还有一个简单的问题:在您引用的文章中,动态链接到
脚本
标记中的样式表有什么特别的意义吗?换句话说,仅仅包含
就足够了吗?@AlbertXing包含
如何?如果你把它附加到HTML中也会有同样的效果。文章说要通过JS动态添加link元素,我只是想知道简单地将link元素放在HTML文件的head元素中是否仍然可以使用这种策略。你是说当页面最初加载时,还是说要附加
元素?我想知道如果样式表不是从JS动态加载的,脚本是否仍然有效(你知道,比如当你在HTML文件的
中有
元素时。换句话说,不是附加
元素,而是将它放在HTML中。