Sono bloccato a capire quale di questi dovrei usare: beforeunload
o onbeforeunload
Entrambi sembrano fare cose molto simili, ma con una diversa compatibilità con i browser.beforeunload O onbeforeunload
Alcuni contesto:
Ho una forma. Durante il caricamento della pagina, serializzo il modulo e lo salvi in una variabile. Se l'utente lascia la pagina, serializzo il modulo e confronta i due, per vedere se ci sono state modifiche. Tuttavia, se il modulo viene inviato, l'evento non dovrebbe essere licenziato.
Esempio 1
ho questo lavoro come previsto. Io proprio non capisco le differenze tra i due:
window.onbeforeunload = function(e) {
if(strOnloadForm != strUnloadForm)
return "You have unsaved changes.";
}
Con questa formazione per fermarlo sparare quando si salva il modulo (legato a .submit()
)
window.onbeforeunload = null;
Esempio 2
window.addEventListener("beforeunload", function(event) {
if(strOnloadForm != strUnloadForm)
event.returnValue = "You have unsaved changes.";
});
Con questa riga per arrestare l'attivazione quando si salva il modulo (associato a .submit()
)
window.removeEventListener("beforeunload");
Cosa dice la documentazione
ho letto la documentazione per onbeforeunload e beforeunload. Sotto la sezione onbeforeunload
Notes si afferma:
È possibile e dovrebbe gestire questo evento attraverso window.addEventListener() e l'evento beforeunload. Più documentazione è disponibile lì. 1
Il che mi fa pensare che dovrebbe utilizzare quest'ultimo. Tuttavia la documentazione per removeEventHandler dice questo:
addEventListener()
eremoveEventListener()
non sono presenti nei browser più vecchi. È possibile aggirare questo problema inserendo il seguente codice all'inizio degli script, consentendo l'uso diaddEventListener()
eremoveEventListener()
in implementazioni che non lo supportano in modo nativo. 2
Potrebbe qualcuno si prega di far luce sulle differenze di questi si prega, e il migliore da usare?
https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload#Notes https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener#Polyfill_to_support_older_browsers
E 'esattamente lo stesso evento, ma quando si usa addEventListener si lascia sempre della parte "on". – adeneo
Grazie, ha senso che in realtà è solo un modo diverso di sparare allo stesso evento. –