Se proprio ne hai bisogno, non puoi semplicemente ottenere tutti i link, i moduli e gli oggetti DOM che hanno un gestore che cambia l'URL e fa in modo che attenda fino a quando non hai fatto quello che vuoi. Per i collegamenti, ottieni getElementsByTagName, controlla se href inizia con qualcosa tranne un # e aggiungi semplicemente la tua funzione onbeforeunload add onclick (che sarà invocata prima che venga guardato href). Lo stesso per i moduli ma con onsubmit. Infine, per gli elementi che modificano l'href con JavaScript, dovresti assicurarti di quando aggiungi l'utente che chiami la tua funzione onbeforeunlaod (o, se usi gli ascoltatori DOM0 o DOM1, puoi semplicemente aggiungere qualche classe e poi usare un global script che controlla tutti gli elementi con la classe e lo aggiunge al listener di eventi con una chiusura
Ma dovresti essere normalmente in grado di evitare l'uso di questo evento (probabilmente usando i cookie per memorizzare la cosa che volevi inviare ogni x secondi e permettendo, nel peggiore dei casi, di dare un'occhiata alla prossima volta che l'utente carica una pagina e, nel migliore dei casi, essere in grado di inviare una richiesta Ajax a onbeforeunload o onunload che, anche se invia solo le intestazioni http , woudl ti permette di ottenere quello che vuoi)
Questo è un duplicato di [non window.onbeforeunload lavorare su l'iPad?] (http://stackoverflow.com/questions/3239834/window-onbeforeunload-not-working-on-the-ipad) –