Domanda

Quando un utente lascia una pagina del mio sito web, ci dovrebbe essere un messaggio di avviso che dà all'utente la possibilità di rimanere sulla pagina:

"Sei sicuro di voler chiudere questa pagina?"

Non importa se la pagina successiva è una pagina interna o esterna.

Ho pensato che questo potrebbe essere fatto con il gestore di eventi onUnload, non poteva?

<body onunload="confirmClose()">

La funzione confirmClose () deve poi mostrare una finestra di messaggio con due pulsanti in modo che l'utente può scegliere tra "Davvero lasciare" o "Stay".

function confirmClose() {
    return confirm('Really leave this page?')
}

Ma questa funzione non può fermare lo scarico, giusto?

Avete una soluzione per il mio problema? Grazie in anticipo!

È stato utile?

Soluzione

È possibile aggiungere un evento onbeforeunload. Si noti che può solo restituire una stringa di testo da includere nella finestra del browser visualizzerà quando l'evento viene chiamato. Non è possibile modificare la finestra di dialogo di là di questo, né è possibile attivare il proprio confirm come si sta cercando di fare.

Mi piacerebbe notare che questo è molto, un comportamento molto fastidioso se non in un paio di situazioni specifiche. A meno che non mi sta salvando da una significativa perdita di dati con questo, si prega di non farlo.

Altri suggerimenti

È possibile fornire solo il testo. Il browser gestisce la finestra di dialogo (motivi di sicurezza). Ecco un po 'di codice è possibile utilizzare:

window.onbeforeunload = function (e) {
    var e = e || window.event;
    var msg = 'Are you sure you want to leave?';

    // For IE and Firefox
    if (e) {
        e.returnValue = msg;
    }

    // For Safari / chrome
    return msg;
}

Prova questo su diversi browser, però. Noterete il messaggio deve essere costruito in modo diverso a seconda finestra formulazione dei vari browser.

Ecco quello che io uso:

if (IsChrome) {
    return 'You were in the middle of editing. You will lose your changes if you leave this page';
} else {
    return 'You were in the middle of editing. Press OK to leave this page (you will lose your changes).';
}

Il browser si occupa di visualizzare la finestra di conferma. È necessario restituire la stringa con il messaggio che si vuole chiedere. Inoltre, si consiglia di utilizzare onbeforeunload per la compatibilità cross browser.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top