Lors de la modification d'une page dans mon système, un utilisateur peut décider de naviguer vers un autre site Web et, ce faisant, perdre toutes les modifications qu'il n'a pas enregistrées.
Je voudrais intercepter toute tentative d'aller sur une autre page et inviter l'utilisateur à être sûr qu'il souhaite que cela se produise, car il pourrait potentiellement perdre son travail actuel.
Gmail fait cela de manière très similaire. Par exemple, rédigez un nouvel e-mail, commencez à taper dans le corps du message et entrez un nouvel emplacement dans la barre d'adresse (par exemple, twitter.com ou quelque chose). Il vous demandera "Êtes-vous sûr?"
Des idées comment reproduire cela? Je cible IE8, mais j'aimerais également être compatible avec FF et Chrome.
la source
Réponses:
Similaire à la réponse de Ghommey, mais cela prend également en charge les anciennes versions d'IE et de Firefox.
la source
var foo, bar;
est le même quevar foo;
var bar;
Consultez cet article. La fonctionnalité que vous recherchez est la fonction onbeforeunload
exemple de code:
la source
Au lieu d'une fenêtre contextuelle de confirmation ennuyeuse, il serait bien de retarder un peu de laisser un peu (question de millisecondes) pour gérer avec succès la publication des données non enregistrées sur le serveur, ce que j'ai géré pour mon site en écrivant un texte factice sur la console comme ceci:
Edit: Voir aussi Synchronous_AJAX et comment faire cela avec jquery
la source
SCHEDULED_REQUEST
est un objet qui accumule toutes les informations non urgentes qui devraient être envoyées au serveur, comme un tampon de données, joignant effectivement plusieurs requêtes à une seule (bien sûr, l'url de ces requêtes est la même). L'utilisation d'une requête Ajax synchrone avant le déchargement devrait résoudre le problème entre les navigateurs, comme vous l'avez dit. Merci pour votre précieux commentaire!J'ai des utilisateurs qui n'ont pas rempli toutes les données requises.
la source