Avertit avant la perte des réponses sur les trois TD

Les réponses saisies dans les exercices ne sont pas enregistrées : un
rechargement ou une navigation les efface sans prévenir.

Ajoute sur BioCID, FDS et TP Nuisibles un indicateur de saisie et un
gestionnaire beforeunload : dès qu'une réponse a été renseignée, le
navigateur demande confirmation avant de recharger ou de quitter la page.
Aucune alerte tant que rien n'a été saisi.

Sur FDS, les parties glisser-déposer, liaisons FT et zones cliquables de
l'étiquette ne produisent pas d'événement input : elles signalent la
saisie explicitement. Même chose pour le choix du cas pratique du TP.

Note : le texte affiché dans la boîte de dialogue est imposé par le
navigateur et n'est pas personnalisable.
This commit is contained in:
2026-07-20 20:36:19 +02:00
parent 421ae4c2bf
commit a42957ad41
3 changed files with 51 additions and 1 deletions

View File

@@ -1317,6 +1317,7 @@ function updateUI() {
}
function selectCase(key, icon, title, desc) {
marquerModifie();
selectedCase.key = key;
selectedCase.icon = icon;
selectedCase.title = title;
@@ -1620,6 +1621,21 @@ function escapeHtml(str) {
return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
}
/* ======================== PROTECTION CONTRE LA PERTE DES RÉPONSES ======================== */
/* Les réponses ne sont pas enregistrées : on avertit avant tout rechargement ou départ.
Le texte de la boîte est imposé par le navigateur, il n'est pas personnalisable. */
let reponsesModifiees = false;
function marquerModifie() { reponsesModifiees = true; }
document.addEventListener('input', marquerModifie, true);
document.addEventListener('change', marquerModifie, true);
window.addEventListener('beforeunload', e => {
if (!reponsesModifiees) return;
e.preventDefault();
e.returnValue = '';
});
updateUI();
</script>
</body>