2015-04-15 19 views
6

Sto tentando di visualizzare un messaggio all'utente prima che chiuda la finestra. Sto usando SweetAlert (http://tristanedwards.me/sweetalert) che sta funzionando bene.Avvio di SweetAlert per impedire all'utente di chiudere la finestra

Il problema è con JavaScript/jQuery per farmi sapere quando l'utente sta tentando di chiudere la finestra/scheda e quindi di visualizzare qualcosa che gli impedisce di chiudere la pagina a meno che non faccia di nuovo clic.

<script language="JavaScript"> 
    window.onbeforeunload = confirmExit; 
    function confirmExit() { 
     swal("Here's a message!"); 
     return "You have attempted to leave this page. Are you sure?"; 
    } 
</script> 

Ho provato questo, ma visualizza il brutto messaggio abituale in cima al mio SweetAlert, qualche idea? Senza la parte di ritorno chiude comunque la finestra, ho provato:/

+0

puoi mostrarlo sul tuo sito web? solo da questo frammento di codice sarà difficile riuscire a capire il problema. –

+0

Penso che sia il browser predefinito, quindi non c'è modo di impedire che l'avviso predefinito venga visualizzato quando l'utente tenta di chiudere il browser. –

+0

prova a usare "return;" invece di quello che stai usando –

risposta

7

You can't disable the alert, nor change the style of the alert on onbeforeunload. Il motivo principale è per problemi di sicurezza.

Da documento MDN, WindowEventHandlers.onbeforeunload, si dice,

Quando questo evento restituisce un valore non nullo, all'utente viene richiesto di confermare la pagina di scarico. Nella maggior parte dei browser, il valore di ritorno dell'evento viene visualizzato in questa finestra di dialogo. In Firefox 4 e versioni successive la stringa restituita non viene visualizzata all'utente. Invece, Firefox visualizza la stringa "Questa pagina ti chiede di confermare che vuoi andartene - i dati che hai inserito potrebbero non essere salvati." Vedi bug 588292.

Dal 25 maggio 2011, la specifica HTML5 afferma che le chiamate ai metodi window.alert(), window.confirm() e window.prompt() possono essere ignorate durante questo evento. Vedi le specifiche HTML5 per maggiori dettagli.

Si noti inoltre che vari browser mobili ignorano il risultato dell'evento (ovvero, non chiedono conferma all'utente). Firefox ha una preferenza nascosta in about: config per fare lo stesso. In pratica, ciò significa che l'utente conferma sempre che il documento può essere scaricato.