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;
|
return html;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Protection contre les exécutions multiples
|
||||||
|
let isInitialized = false;
|
||||||
|
let initTimeout = null;
|
||||||
|
|
||||||
function initStrategyLinks() {
|
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();
|
addLinksToHeader();
|
||||||
handleRoute();
|
handleRoute();
|
||||||
}
|
}
|
||||||
@@ -764,7 +780,10 @@ Interface de pilotage pour les responsables sécurité des PME.
|
|||||||
if (window.originalBodyContent) {
|
if (window.originalBodyContent) {
|
||||||
document.body.innerHTML = window.originalBodyContent;
|
document.body.innerHTML = window.originalBodyContent;
|
||||||
window.history.pushState(null, null, '/');
|
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 {
|
} else {
|
||||||
window.location.href = '/';
|
window.location.href = '/';
|
||||||
}
|
}
|
||||||
@@ -817,6 +836,11 @@ Interface de pilotage pour les responsables sécurité des PME.
|
|||||||
}
|
}
|
||||||
|
|
||||||
function addLinksToHeader() {
|
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
|
// Chercher le header
|
||||||
const header = document.querySelector('header') ||
|
const header = document.querySelector('header') ||
|
||||||
document.querySelector('nav') ||
|
document.querySelector('nav') ||
|
||||||
@@ -873,12 +897,21 @@ Interface de pilotage pour les responsables sécurité des PME.
|
|||||||
showPage(event.state.page);
|
showPage(event.state.page);
|
||||||
} else if (window.originalBodyContent) {
|
} else if (window.originalBodyContent) {
|
||||||
document.body.innerHTML = 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 ---
|
// --- EXÉCUTION AU CHARGEMENT DE LA PAGE ---
|
||||||
// Déplacé à la fin pour s'assurer que toutes les fonctions et variables sont définies
|
// 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') {
|
if (document.readyState === 'loading') {
|
||||||
// Bloquer le rendu visuel immédiat si possible
|
// Bloquer le rendu visuel immédiat si possible
|
||||||
document.documentElement.style.display = 'none';
|
document.documentElement.style.display = 'none';
|
||||||
|
|||||||
Reference in New Issue
Block a user