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:
@@ -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, '&').replace(/</g, '<').replace(/>/g, '>');
|
||||
}
|
||||
|
||||
/* ======================== 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>
|
||||
|
||||
Reference in New Issue
Block a user