Я добавляю текст и изображения php-страницы через Ajax в контейнер и показываю его после загрузки всех изображений. Это прекрасно работает, если я использую только src, но не если я использую srcset.
Пока что я использую этот фрагмент кода, чтобы проверить, все ли ajaxed src-тегированные изображения были загружены. Но, конечно, он на самом деле не работает, потому что он проверяет 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.
})
)}
Ожидаемый результат должен состоять в том, что проверка, все ли изображения были загружены, должна также работать с srcset, а не только с src. Фактический результат заключается в том, что он просто не уважает imagesLoaded ().