Eventualmente correlato a How to open mailto link in Chrome with Window.open without creating a new tab?mailto link (in chrome) sta attivando window.onbeforeunload - posso impedirlo?
Ciao a tutti. Ho una pagina modulo in cui ho messo una conferma window.onbeforeunload, per impedire alla gente la navigazione via e perdendo i loro cambiamenti per caso:
window.onbeforeunload = function(){
if(changed)
return "You have unsaved changes. Do you really want to leave this page without saving?";
};
dove changed
è una variabile ho impostato a true ogni volta che l'utente effettua tutte le modifiche . Va tutto bene. Tuttavia, ho anche aggiunto alcuni link mailto alla pagina, in questo modo:
<a class="button button-alt" href="mailto:[email protected]">Report a problem</a>
Anche se il mailto non è di uscire dalla pagina (è aprire l'applicazione di posta degli utenti di default), è ancora innescare il evento onbeforeunload, che richiede la casella di conferma, che è fastidioso. Posso aggirarlo impostando target="_blank"
sul link, ma poi l'utente rimane in una scheda vuota.
Posso impostare il collegamento mailto per non attivare l'evento onbeforeunload? Ho pensato ad un modo orribilmente hacky di farlo con un'altra variabile javascript temporanea che non conferma la conferma di onbeforeunload, ma sembra piuttosto sporca. Lo farò comunque mentre aspetto una risposta ma qualcuno ha una soluzione migliore?
grazie, max
Questo sembra molto più bello - grazie! –
Davvero? rispondi a un post 3 anni dopo?lol L'unica differenza è l'aggiunta di onclick a un evento non invadente ... lol – epascarello
Si affida a jQuery senza motivo, facendo affidamento sulla variabile globale. La risposta di John Kurlak qui sotto è molto più bella. Usa un iframe nascosto, eliminando totalmente la necessità di JavaScript, per non parlare di jQuery. Può quindi auto-contenere la correzione nel file di modello. – mGuv