In una web app su cui sto lavorando, sto cattura onbeforeunload per chiedere all'utente se ha davvero vuole uscire.Rilevare se l'utente rimasto dopo aver chiesto onbeforeunload
Ora, se decide di restare, ci sono un certo numero di cose che mi piacerebbe fare. Quello che sto cercando di capire è che in realtà ha scelto di rimanere.
Posso ovviamente dichiarare un SetTimeout per "x" secondi, e se ciò si attiva, significherebbe che l'utente è ancora lì (perché non siamo stati scaricati). Il problema è che l'utente può prendere qualsiasi momento per decidere se rimanere o meno ...
Inizialmente speravo che durante la finestra di dialogo, le chiamate di SetTimeout non si attivassero, quindi potrei impostare un timeout per un breve tempo e sarebbe sparato solo se l'utente ha scelto di rimanere. Tuttavia, i timeout do si attivano mentre viene visualizzata la finestra di dialogo, in modo che non funzioni.
Un'altra idea che ho provato è catturare mouseMoves sulla finestra/documento. Mentre viene mostrata la finestra di dialogo, mouseMoves infatti non sparare, tranne per una strana eccezione che si applica davvero al mio caso, in modo che non funzionerà neanche.
Qualcuno può pensare ad altro modo per farlo?
Grazie!
(Nel caso foste curiosi, la ragione per la cattura mouseMove non funziona è che ho un IFrame nella mia pagina, contenente un sito da un altro dominio. Se al momento dello scarico della pagina, il la messa a fuoco è all'interno dell'IFrame, mentre la finestra di dialogo mostra, quindi viene attivato l'evento MouseMove ONCE quando il mouse si sposta dall'IFrame all'esterno (almeno in Firefox). Probabilmente è un bug, ma è comunque probabile che sia " Succederemo nel nostro caso, quindi non posso usare questo metodo).
Signore, sono il mio eroe. – Pascal
Felice di aver aiutato? Il codice –
va bene. Voglio eseguire la funzione logout() se l'utente fa clic sul pulsante "Lascia questa pagina". Ma come posso rilevare se l'utente ha fatto clic su "Abbandona questa pagina" oppure no? –