Skip to content

Commit 386457a

Browse files
committed
preload images in slideshow
1 parent a1fc9d8 commit 386457a

1 file changed

Lines changed: 27 additions & 15 deletions

File tree

assets/js/partnerships-slideshow.js

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ document.addEventListener("DOMContentLoaded", function () {
44
"/images/partnerships/kinaxis_presentation.png",
55
"/images/partnerships/cisco-talk.png",
66
"/images/partnerships/big-group-seminar-room.png",
7-
"/images/partnerships/kinaxis_group_talking.png",
7+
"/images/partnerships/kinaxis-group-talking.png",
88
"/images/partnerships/jobuary_panel.png",
99
];
1010

@@ -17,13 +17,25 @@ document.addEventListener("DOMContentLoaded", function () {
1717
var slideshowStarted = false;
1818
var observer;
1919

20+
// Preload all images
21+
function preloadImages(urls, callback) {
22+
let loaded = 0;
23+
let total = urls.length;
24+
urls.forEach(function (url) {
25+
const img = new Image();
26+
img.onload = img.onerror = function () {
27+
loaded++;
28+
if (loaded === total) callback();
29+
};
30+
img.src = url;
31+
});
32+
}
33+
2034
function startPartnershipsSlideshow() {
2135
if (slideshowStarted) return;
2236
slideshowStarted = true;
23-
// Set initial images
2437
partnershipsFront.style.backgroundImage = `url('${partnershipUrls[0]}')`;
2538
partnershipsBack.style.backgroundImage = `url('${partnershipUrls[0]}')`;
26-
2739
function nextSlide() {
2840
partnershipSlideshowIndex =
2941
(partnershipSlideshowIndex + 1) % partnershipUrls.length;
@@ -40,25 +52,25 @@ document.addEventListener("DOMContentLoaded", function () {
4052
}, partnershipFadeDuration);
4153
setTimeout(nextSlide, partnershipImageTransitionDuration);
4254
}
43-
4455
function changePartnershipsImage(header, imagePath) {
4556
header.style.backgroundImage = `url('${imagePath}')`;
4657
}
47-
4858
setTimeout(nextSlide, partnershipImageTransitionDuration);
4959
}
5060

5161
if (partnershipsFront && partnershipsBack) {
52-
observer = new IntersectionObserver(
53-
function (entries) {
54-
if (entries[0].isIntersecting) {
55-
startPartnershipsSlideshow();
56-
observer.disconnect();
57-
}
58-
},
59-
{ threshold: 0.2 }
60-
);
61-
observer.observe(partnershipsFront);
62+
preloadImages(partnershipUrls, function () {
63+
observer = new IntersectionObserver(
64+
function (entries) {
65+
if (entries[0].isIntersecting) {
66+
startPartnershipsSlideshow();
67+
observer.disconnect();
68+
}
69+
},
70+
{ threshold: 0.2 }
71+
);
72+
observer.observe(partnershipsFront);
73+
});
6274
} else {
6375
console.error("Partnerships slideshow elements not found.");
6476
}

0 commit comments

Comments
 (0)