fix: éviter les rechargements en boucle causés par le hot-reload
- Ajout de protections contre les exécutions multiples de initStrategyLinks() - Protection globale avec window.__strategieScriptLoaded pour éviter la réexécution du script - Vérification dans addLinksToHeader() pour éviter d'ajouter les liens plusieurs fois - Gestion correcte du flag isInitialized lors des retours au radar - Cela devrait résoudre les problèmes de Fast Refresh qui causent des rechargements en boucle
This commit is contained in:
@@ -706,7 +706,23 @@ Interface de pilotage pour les responsables sécurité des PME.
|
||||
return html;
|
||||
}
|
||||
|
||||
// Protection contre les exécutions multiples
|
||||
let isInitialized = false;
|
||||
let initTimeout = null;
|
||||
|
||||
function initStrategyLinks() {
|
||||
// Éviter les exécutions multiples
|
||||
if (isInitialized) return;
|
||||
|
||||
// Annuler toute tentative d'initialisation en cours
|
||||
if (initTimeout) {
|
||||
clearTimeout(initTimeout);
|
||||
initTimeout = null;
|
||||
}
|
||||
|
||||
// Marquer comme initialisé immédiatement
|
||||
isInitialized = true;
|
||||
|
||||
addLinksToHeader();
|
||||
handleRoute();
|
||||
}
|
||||
@@ -764,7 +780,10 @@ Interface de pilotage pour les responsables sécurité des PME.
|
||||
if (window.originalBodyContent) {
|
||||
document.body.innerHTML = window.originalBodyContent;
|
||||
window.history.pushState(null, null, '/');
|
||||
setTimeout(initStrategyLinks, 100);
|
||||
// Réinitialiser le flag pour permettre la réinitialisation
|
||||
isInitialized = false;
|
||||
if (initTimeout) clearTimeout(initTimeout);
|
||||
initTimeout = setTimeout(initStrategyLinks, 100);
|
||||
} else {
|
||||
window.location.href = '/';
|
||||
}
|
||||
@@ -817,6 +836,11 @@ Interface de pilotage pour les responsables sécurité des PME.
|
||||
}
|
||||
|
||||
function addLinksToHeader() {
|
||||
// Protection : vérifier si les liens existent déjà
|
||||
if (document.querySelector('.custom-nav-link')) {
|
||||
return; // Déjà initialisé, ne pas réexécuter
|
||||
}
|
||||
|
||||
// Chercher le header
|
||||
const header = document.querySelector('header') ||
|
||||
document.querySelector('nav') ||
|
||||
@@ -873,12 +897,21 @@ Interface de pilotage pour les responsables sécurité des PME.
|
||||
showPage(event.state.page);
|
||||
} else if (window.originalBodyContent) {
|
||||
document.body.innerHTML = window.originalBodyContent;
|
||||
setTimeout(initStrategyLinks, 100);
|
||||
// Réinitialiser le flag pour permettre la réinitialisation
|
||||
isInitialized = false;
|
||||
if (initTimeout) clearTimeout(initTimeout);
|
||||
initTimeout = setTimeout(initStrategyLinks, 100);
|
||||
}
|
||||
});
|
||||
|
||||
// --- EXÉCUTION AU CHARGEMENT DE LA PAGE ---
|
||||
// Déplacé à la fin pour s'assurer que toutes les fonctions et variables sont définies
|
||||
// Protection globale contre les exécutions multiples
|
||||
if (window.__strategieScriptLoaded) {
|
||||
return; // Script déjà chargé, ne pas réexécuter
|
||||
}
|
||||
window.__strategieScriptLoaded = true;
|
||||
|
||||
if (document.readyState === 'loading') {
|
||||
// Bloquer le rendu visuel immédiat si possible
|
||||
document.documentElement.style.display = 'none';
|
||||
|
||||
Reference in New Issue
Block a user