2010-02-25 11 views
6

Jaki jest kod/zdarzenie JavaScript używane przez witryny takie jak stackoverflow i Gmail, aby przetestować użytkownika opuszczającego stronę po rozpoczęciu edycji i spróbować odejść? Zdarzenie:Czy na pewno chcesz nawigować?

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

Odpowiedz

8

Wykorzystane zdarzenie nazywa się 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

Pamiętaj, że 'window.onbeforeunload' nie działa w Operze, użytkownicy będą po prostu nawigować bez ostrzeżenia. –

+0

Czy jesteś pewien, że to $ ("# foo"). Zmienić? Wygląda na to, że zmiana nie zostanie zastosowana, dopóki pole nie straci ostrości. –

+0

Masz rację, bardziej sensowne jest posługiwanie się 'keypress' zamiast' change'. Zaktualizowałem swoją odpowiedź. –

3

onbeforeunload. Mozilla dostarcza użyteczny przykładowy kod. po prostu chcesz mieć funkcję:

  1. Zwraca ciąg
  2. Zestawy e.returnValue do tego łańcucha, gdzie e jest argument lub window.event.

Łańcuch zostanie użyty jako wiadomość niestandardowa.

Powiązane problemy