Saludos.
Alguna vez me encontré con el mismo problema, y hacer un
onUnload o un
onBeforeUnload no funciona, porque a fin de cuentas si le dan submit a la forma, el evento
onUnload se disparará de todos modos.
Lo mas factible seria que a cada link le pusieras un
Código:
onClick="return VerificaDatos()";
para que verificara los campos de tu forma, pero si por alguna razón es demasiado engorroso cambiar todos los links, aqui te pongo un script de ejemplo para añadir el evento
onClick a todos los links de tu pagina
Date cuenta de que el segundo script está al final del documento, si lo pones antes no leerá todos los links de tu pagina
Código HTML:
<html>
<script>
function VerificaDatos(){
// AQUI EN VEZ DE ESTO HAS LA COMPROBACIÓN DE LOS CAMPOS DE TU FORMA
AlgoHaCambiado = true;
////////////////////////////////////////////////////////////////////
// ESTA ES LA CONFIRMACION FINAL
if(AlgoHaCambiado){
return confirm('Esta seguro de que desea salir sin guardar sus cambios?');
}else{
return true;
};
};
</script>
<body >
<a href="http://forosdelweb.com">Link 1</a><br>
<a href="http://google.com">Link 2</a><br>
<a href="http://isaacluz.com">Link 3</a>
<script>
// OBTENEMOS EL ARRAY DE LOS ENLACES EN LA PAGINA
Enlaces = document.links;
// A CADA ENLACE LE PONEMOS LA FUNCION PARA VERIFICAR LOS DATOS
for(i=0;i<Enlaces.length;i++){
Enlaces[i].onclick =function(){return VerificaDatos()};
};
</script>
</body>
</html>