我通过Ajax将php页的文本和图像附加到容器中,并在所有图像加载后显示出来。如果我仅使用src,而不能使用srcset,则此方法非常有效。
到目前为止,我正在使用此代码段来检查是否已加载所有带有src标签的ajax图像。但是,当然,它实际上不起作用,因为它正在检查src而不是srcset。
$.fn.imagesLoaded = function () {
var $imgs = this.find('img[src!=""]');
if (!$imgs.length) {
return $.Deferred().resolve().promise();
}
var dfds = [];
$imgs.each(function(){
var dfd = $.Deferred();
dfds.push(dfd);
var img = new Image();
img.onload = function(){
dfd.resolve();
}
img.onerror = function(){
dfd.resolve();
}
img.src = this.src;
});
return $.when.apply($,dfds);
}
这是我的Ajax代码:
$.ajax({
cache: false,
url: "somefile.php",
success: function(data) {
$("body").prepend(data).imagesLoaded().then(function(){
// show the images etc.
})
)}
预期结果应该是,检查是否已加载所有映像,并且不仅应与src一起使用,而且应与srcset一起使用。实际结果是,它只是不尊重imagesLoaded()。