-
${title}
-
-
+ overlay.innerHTML = `
+
-
- `;
+ `;
+ } else {
+ // Keep screen reader label up to date.
+ const label = overlay.querySelector('.visually-hidden');
+ if (label) label.textContent = title;
+ }
const barEl = () => overlay.querySelector('#page-loader-bar');
@@ -105,7 +113,7 @@ function createPageLoader(options = {}) {
return { setProgress, setSubtitle, done, fail };
}
-window.onload = async function () {
+window.addEventListener('DOMContentLoaded', async function () {
const pageLoader = createPageLoader({
title: 'Chargement de la checklist',
subtitle: 'Récupération des données…'
@@ -523,4 +531,4 @@ window.onload = async function () {
rewardVideo.pause();
rewardVideo.currentTime = 0;
});
- };
\ No newline at end of file
+ });
\ No newline at end of file
diff --git a/public/js/app_movies.js b/public/js/app_movies.js
index ff69751..fb0327b 100644
--- a/public/js/app_movies.js
+++ b/public/js/app_movies.js
@@ -7,20 +7,28 @@ function createPageLoader(options = {}) {
let removed = false;
let navResizeObserver = null;
- const overlay = document.createElement('div');
- overlay.className = 'page-loader-overlay';
- overlay.setAttribute('role', 'status');
- overlay.setAttribute('aria-live', 'polite');
- overlay.setAttribute('aria-busy', 'true');
+ // Reuse a preloaded overlay if present (prevents initial "clear" flash).
+ const preloadedOverlay = document.getElementById('page-loader-overlay');
+ const overlay = preloadedOverlay || document.createElement('div');
+ if (!preloadedOverlay) {
+ overlay.className = 'page-loader-overlay';
+ overlay.setAttribute('role', 'status');
+ overlay.setAttribute('aria-live', 'polite');
+ overlay.setAttribute('aria-busy', 'true');
- overlay.innerHTML = `
-
-
${title}
-
-
+ overlay.innerHTML = `
+
-
- `;
+ `;
+ } else {
+ // Keep screen reader label up to date.
+ const label = overlay.querySelector('.visually-hidden');
+ if (label) label.textContent = title;
+ }
const barEl = () => overlay.querySelector('#page-loader-bar');
@@ -133,7 +141,7 @@ async function waitForImagesIn(containerEl, onProgress) {
]);
}
-window.onload = async function () {
+window.addEventListener('DOMContentLoaded', async function () {
const pageLoader = createPageLoader({
title: 'Chargement des films',
subtitle: 'Récupération des données…'
@@ -414,4 +422,4 @@ window.onload = async function () {
}
filterMovies();
- };
\ No newline at end of file
+ });
\ No newline at end of file
diff --git a/public/movies.html b/public/movies.html
index 1c109e0..c755142 100644
--- a/public/movies.html
+++ b/public/movies.html
@@ -64,7 +64,17 @@
}
-
+
+
+
+