aquí hay algo de html prueba de muestra:caso onbeforeunload es demasiado entusiasta en IE9
<!DOCTYPE html>
<html>
<body>
<a href="javascript:alert('Not going anywhere!');">Go nowhere 1</a>
<a href="javascript:void(0);" onclick="alert('Not going anywhere!');">Go nowhere 2</a>
<a href="http://www.google.com">Go somewhere</a>
<script type="text/javascript">
window.onbeforeunload = function() { return "Really leave?"; };
</script>
</body>
</html>
Esto está disponible como una página de trabajo aquí: timjeanes.com/ie9_onbeforeunload.htm
En Firefox, Chrome y Safari, consigo el comportamiento Quiero . Es decir, al hacer clic en cualquiera de los dos primeros enlaces, aparece un cuadro de diálogo de alerta; al hacer clic en el tercer enlace (o navegar de otro modo) se muestra "¿Seguro que quieres salir de esta página?" mensaje.
Sin embargo, en IE9, "¿Seguro que quieres salir de esta página?" El mensaje también se muestra cuando hace clic en cualquiera de los primeros dos enlaces, aunque no se está navegando, solo estamos ejecutando JavaScript.
¿Hay algo que estoy haciendo mal? ¿O hay una buena solución para IE?
Una opción sería utilizar href = "#" y poner mi javascript en el clic. No estoy interesado en eso, ya que lleva al usuario a la parte superior de la página, y mi página de la vida real es bastante alta.
No he probado en otras versiones de IE.
De todos modos es realmente repugnante poner su JavaScript en el "href". Ponlo en el atributo del controlador de eventos o, mejor aún, adjúntalo dinámicamente con un código JavaScript discreto separado. Si los controladores de eventos cancelan la acción predeterminada del clic, el navegador no desplazará la página. – Pointy
Sí, estoy usando JavaScript no intrusivo en la vida real; Solo quería mantener las cosas breves en el código de muestra. Ponerlo en la href fue demostrar que esa no era una solución. Gracias sin embargo. – teedyay
OK entonces, continúe :-) – Pointy