È necessario ascoltare l'evento non-standard beforeunload
. Questo è supportato da quasi tutti i browser, si aspetta da Opera, che è noto per rispettare gli standard W3C estremamente rigorosamente.
Ecco un esempio kickoff:
window.onbeforeunload = function() {
return "Hey, you're leaving the site. Bye!";
};
Questo messaggio verrà visualizzato in natura di un dialogo di conferma. Questo messaggio apparirà a destra prima del il client scarica la pagina. Questo può essere un browser chiuso, ma che può anche essere una semplice azione di navigazione come fare clic su un link o inviare un modulo nella pagina!
Probabilmente si desidera anche disattivarlo (è sufficiente impostare su null
) ogni volta che si fa clic su un collegamento interno o viene inviato un modulo interno. Ovvero non vuoi infastidire gli utenti con un comportamento non intuitivo. È possibile farlo ascoltando l'evento click
dei collegamenti desiderati e l'evento submit
dei moduli desiderati. jQuery può essere di grande aiuto qui perché lo fa in maniera crossbrowsercompatible in modo che non c'è bisogno di scrivere> 20 righe di codice JS per questo:
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
window.onbeforeunload = function() {
return "You're leaving the site.";
};
$(document).ready(function() {
$('a[rel!=ext]').click(function() { window.onbeforeunload = null; });
$('form').submit(function() { window.onbeforeunload = null; });
});
</script>
Hai solo bisogno di dare a tutti i link esterni lo standard di fatto attributo rel="ext"
per indicare che si tratta di collegamenti esterni.
<a href="http://google.com" rel="ext">Google</a>
possibile duplicato di [Chiama alcuni JavaScript quando l'utente chiude una finestra (popup)] (http://stackoverflow.com/questions/1333833/call-some-javascript-when-the-user-close- a-popup-window) –
possibile dupli cate di [javascript per verificare quando la finestra del browser è chiusa] (http://stackoverflow.com/questions/805463/javascript-to-check-when-the-browser-window-is-close) – CMS