2013-04-23 10 views
5

Ci scusiamo se questo è semplicistico; Sono nuovo di JQuery. Ho cercato e trovato domande come this, ma non sembrano rispondere alla mia domanda.Eseguire l'azione sul pulsante di arresto del browser fare clic su

Sto usando jQuery per mostrare un indicatore di avanzamento muto per le azioni che richiedono molto tempo:

$(document).ready(function() { 
    $('form').submit(function() { 
     $('#progress').show(); 
    }); 
}); 

Quando l'utente fa clic su un pulsante di forma, ho solo mostrare un div con una gif animata. Questo div è visibile per il resto del tempo in cui la pagina è visibile. Una volta completata l'azione del modulo, viene caricata una nuova pagina.

Funziona bene, ma cosa succede se l'utente fa clic su "interrompi" nel browser prima che l'azione venga completata? Come posso far sparire il div? C'è un modo per prendere questo evento, o c'è un modo migliore per gestire l'intera situazione?

Grazie per il vostro aiuto.

+0

E 'improbabile è possibile catturare l'evento. Ma il modo migliore sarebbe quello di inviare i dati del modulo utilizzando AJAX. Forse [guarda questo] (http://stackoverflow.com/questions/1960240/jquery-ajax-submit-form) – musefan

+0

C'è un evento "onstop", non è cross-browser e non è molto affidabile. – Xotic750

+0

Puoi semplicemente selezionare il div e rimuoverlo? Qualcosa come: '$ ('# progresso'). Remove()' lo porterà fuori dal DOM. Non fermerà qualsiasi azione stia accadendo. Fare ciò richiederebbe altre azioni basate sul modo in cui stai eseguendo l'azione. – ckersch

risposta

0

È possibile utilizzare l'evento "onstop" per gestirlo, ma funzionerà solo per IE. Penso che tu non possa gestire questo evento per altri browser.

Che cosa si può provare è quello di rendere la finestra di avanzamento scompare dopo piccolo timeout:

$('form').submit(function() { 
    $('#progress').show(); 
    setTimeout(function(){ 
      $('#progress').hide(); 
    },3000); 
}); 
+0

Sì, ho concluso che non è possibile. Tuttavia, farlo sparire dopo un timeout non aiuta davvero. Lo rende ancora più confuso: la finestra di dialogo sparirà prima che l'attività sia terminata (facendo credere all'utente di fallire); o ci vorrà un po 'per scomparire quando fanno clic per interrompere (facendo credere all'utente che sia ancora in corso); o entrambi. –

Problemi correlati