Posso visualizzare una finestra di dialogo di conferma quando l'utente sta chiudendo la finestra in Safari / Chrome?
-
03-07-2019 - |
Domanda
In IE e FF, posso collegare un gestore di eventi a onBeforeUnload e passando una stringa a una proprietà dell'evento, l'utente vedrà una finestra di dialogo che gli chiederà se desidera continuare con lo "scarico" " (chiudendo la finestra o allontanandosi).
Safari e Chrome non supportano onBeforeUnload e onUnload sembra essere troppo tardi. Esiste un modo per replicare la stessa funzionalità in Safari / Chrome?
NOTA: non sto cercando di tenere in ostaggio l'utente. So che questo è fastidioso e poco interessante. In effetti, il mio sito fa di tutto per consentire all'utente di spostarsi liberamente e avere tutto al suo posto quando tornano. Tuttavia, sto ospitando altri siti all'interno di IFrame e a volte questi decidono di sbarazzarsi di me e assumere il controllo del browser, che è ciò che sto cercando di evitare.
Grazie!
Soluzione
Questo funziona perfettamente per me sia su Chrome che su Safari:
<html><body><p>Test</p>
<script>window.onbeforeunload = function() { return "Sure?"; }</script>
</body></html>
Quando provo a chiudere la finestra, ricevo il messaggio.
Altri suggerimenti
StackOverflow stesso usa onbeforeunload
, e funziona bene per me in Safari:
function setConfirmUnload(a){window.onbeforeunload=a?function(){return a}:null}
L'ho controllato in Chrome e sembra funzionare bene usando questo:
<body onunload="alert('x');" onbeforeunload="test1();">
Questa domanda è trattata in modo leggermente più dettagliato in un'altra domanda StackOverFlow più recente: Impostazione onbeforeunload sull'elemento body in Chrome e IE utilizzando jQuery