mardi 23 novembre 2010

onbeforeunload

Vous êtes vous déjà demandé comment afficher un message pour ne pas perdre les données saisies non enregistrées sur une page Web ? La solution réside dans la méthode onbeforeunload.



Voila comme l'utiliser :


Attribuez à l'objet window la fameuse methode onbeforeunload. Le retour de cette méthode  (au format texte brut) sera inséré dans le message "pré formaté" que vous fournira votre navigateur. Cette méthode génère en effet une fenêtre de type "confirm" qui indique à l'utilisateur qu'il va quitter cette page. L'internaute pourra alors annuler l'action et sauvegarder avant de quitter votre page.

Mais attention ! Le message, comme le nom de la méthode le précise, s'affiche avant le déchargement de la page, Before Unload, et donc dans les cas suivants :
- Lors d'une demande d'actualisation
- Un clic sur un lien hypertext
- La validation d'un formulaire (submit)

Un exemple :
window.onbeforeunload = function (e)  {
    if (notsave) return "Vous n'avez pas sauvegardé";
}

Le code précedent affichera donc le message uniquement si vous avez des changements non sauvegardés.


Je n'ai pour l'instant rien trouvé  qui permette de différencier une demande de fermeture d'une demande de changement de page (sans recherche poussé non plus). Bien sûre, il vous est toujours possible de mettre une variable globale de statut sur tous les liens et autres pour indiquer le type d'action.

 (Merci à Gérald pour la relecture)

Aucun commentaire: