JavaScript prima di uscire dalla pagina

Voglio fare una conferma prima che l’utente lasci la pagina. Se dice ok allora reindirizza a una nuova pagina o cancella per andarsene. Ho provato a farlo con onunload

 function con() { var answer = confirm("do you want to check our other products") if (answer){ alert("bye"); } else{ window.location = "http://www.example.com"; } }    

main page

Ma conferma dopo pagina già chiusa? Come farlo correttamente?

Sarebbe ancora meglio se qualcuno mostrasse come farlo con jQuery?

onunload (o onbeforeunload ) non può redirect l’utente a un’altra pagina. Questo è per motivi di sicurezza.

Se vuoi mostrare una richiesta prima che l’utente lasci la pagina, usa onbeforeunload :

 window.onbeforeunload = function(){ return 'Are you sure you want to leave?'; }; 

O con jQuery:

 $(window).bind('beforeunload', function(){ return 'Are you sure you want to leave?'; }); 

Questo chiederà all’utente se vuole o meno lasciare la pagina, non è ansible reindirizzarli se scelgono di rimanere sulla pagina. Se scelgono di partire, il browser andrà dove gli hanno detto di andare.

Puoi utilizzare onunload per fare cose prima che la pagina venga scaricata, ma non puoi redirect da lì (Chrome 14+ blocca gli avvisi all’interno di onunload ):

 window.onunload = function() { alert('Bye.'); } 

O con jQuery:

 $(window).unload(function(){ alert('Bye.'); }); 

Questo codice quando si rileva anche lo stato del modulo modificato o meno.

 $('#form').data('serialize',$('#form').serialize()); // On load save form current state $(window).bind('beforeunload', function(e){ if($('#form').serialize()!=$('#form').data('serialize'))return true; else e=null; // ie; if form state change show warning box, else don't show it. }); 

Puoi utilizzare la funzione Serializzazione modulo JQuery di Google, che raccoglierà tutti gli input dei moduli e li salverà nell’array. Immagino che questo spieghi sia abbastanza 🙂

Questo avviserà all’uscita dalla pagina corrente

  

Per avere un popop con Chrome 14+, devi fare quanto segue:

 jQuery(window).bind('beforeunload', function(){ return 'my text'; }); 

All’utente verrà chiesto se desidera restare o andarsene.

Puoi usare il seguente one-liner per chiedere sempre all’utente prima di uscire dalla pagina.

 window.onbeforeunload = s => ""; 

Per chiedere all’utente quando qualcosa nella pagina è stato modificato, vedere questa risposta .

Questo è ciò che ho fatto per mostrare il messaggio di conferma proprio quando ho dati non salvati

 window.onbeforeunload = function () { if (isDirty) { return "There are unsaved data."; } return undefined; } 

restituendo “undefined” disabiliterà la conferma

Nota: restituire “null” non funzionerà con IE

Inoltre puoi usare “undefined” per disabilitare la conferma

 window.onbeforeunload = undefined; 
    

Close this window, press F5 or click on the link below to invoke the onbeforeunload event.

Click here to go to w3schools.com

https://www.w3schools.com/tags/ev_onbeforeunload.asp

Solo un po ‘più utile, abilitare e disabilitare

 $(window).on('beforeunload.myPluginName', false); // or use function() instead of false $(window).off('beforeunload.myPluginName');