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