2010-02-25 15 views
6

Qual è il codice/evento/i JavaScript utilizzato da siti come StackOverflow e Gmail per verificare che l'utente esca dalla pagina una volta che ha iniziato la modifica e tenta di allontanarsi?Sei sicuro di voler navigare?

"Are you sure you want to navigate away from this page?" 

risposta

8

L'evento utilizzato è chiamato onbeforeunload.

<html> 
<head> 
    <script type="text/javascript" src="jquery.js"></script> 
</head> 
<body> 
    <input id="foo"></input> 

    <script type="text/javascript"> 
     function unloadMessage() { 
      return "Are you sure you want to leave?"; 
     } 

     function setConfirmUnload(enabled) { 
      window.onbeforeunload = enabled ? unloadMessage : null; 
     } 

     $(document).ready(function() { 
      $("#foo").keypress(function() { 
       setConfirmUnload(true); 
      }); 
     }); 
    </script> 
</body> 
</html> 
+0

Ricordare che 'window.onbeforeunload' non funziona in Opera, gli utenti andranno semplicemente via, senza preavviso. –

+0

Sei sicuro che sia $ ("# foo"). Cambiare? Sembra che il cambiamento non abbia effetto finché il campo non ha perso lo stato attivo. –

+0

Hai ragione, ha più senso gestire "keypress" invece di "change". Ho aggiornato la mia risposta. –

3

onbeforeunload evento. Mozilla fornisce codice di esempio utile. si vogliono solo avere una funzione che:

  1. Restituisce una stringa
  2. Imposta e.returnValue a quella stringa, dove e è l'argomento o window.event.

La stringa verrà utilizzata come messaggio personalizzato.

Problemi correlati