el beforeunload se carga cuando todo el javascript de tu pagina principal está vivo, por lo que puedes, por ejemplo, usar el evento submit del formulario para poder setear una variable a true o false, ejemplo:
Código javascript
:
Ver originalactivarBU = true;
miformulario.onsubmit = function(){
activarBU = false;
}
window.onbeforeunload = function(){
if(activarBU){
//redireccionar.
}else{
//no redireccionar
}
}
La verdad es que personalmente nunca he hecho algo parecido, pero ese sería mi primer acercamiento al problema. Espero que te sirva.