JP. После проверки вашего решения у меня все еще возникали проблемы в Firefox, где он не предварительно загружал изображения, прежде чем перемещаться вместе с загрузкой страницы. Я обнаружил это, поставив некоторые sleep(5)
в сценарии на стороне сервера. Я реализовал следующее решение, основанное на вашем, которое, кажется, решает это.
В основном я добавил обратный вызов в ваш предварительный плагин jQuery, так что он будет вызван после того, как все изображения будут правильно загружены.
// Helper function, used below.
// Usage: ['img1.jpg','img2.jpg'].remove('img1.jpg');
Array.prototype.remove = function(element) {
for (var i = 0; i < this.length; i++) {
if (this[i] == element) { this.splice(i,1); }
}
};
// Usage: $(['img1.jpg','img2.jpg']).preloadImages(function(){ ... });
// Callback function gets called after all images are preloaded
$.fn.preloadImages = function(callback) {
checklist = this.toArray();
this.each(function() {
$('<img>').attr({ src: this }).load(function() {
checklist.remove($(this).attr('src'));
if (checklist.length == 0) { callback(); }
});
});
};
Из моего интереса, в моем контексте, я использую это следующим образом:
$.post('/submit_stuff', { id: 123 }, function(response) {
$([response.imgsrc1, response.imgsrc2]).preloadImages(function(){
// Update page with response data
});
});
Надеюсь, это поможет кому-то, кто приходит на эту страницу с Google (как и я), ища решение для предварительной загрузки изображений на вызовы Ajax.
При переходе с версии gatsby 2 на 1 обязательно проверьте также глобальную версию gatsby-cli
(последняя версия gatsby-cli 1 - 1.1.41-13 )
#npm
npm uninstall -g gatsby-cli
npm install -g gatsby-cli^1.1.41-13
#yarn
yarn global remove gatsby-cli
yarn global add gatsby-cli^1.1.41-13
. Хотелось бы, чтобы был способ изменить версию глобального пакета, но в настоящее время это кажется невозможным.