He publicado esto here, pero pensé que podría merecer una pregunta por sí mismo.ASP.NET linkbutton raise onBeforeUnload event twice
Lo que intento hacer es mostrar un cuadro de diálogo que le pregunta al usuario si quiere abandonar la página si hay cambios no guardados. Eso todo funciona bien. Pero el problema se describe a continuación:
¿Alguien ha encontrado el problema donde Internet Explorer desencadena el evento onbeforeunload dos veces? Mientras busqué en Google, descubrí que tiene algo que ver con el hecho de que para (entre otros) un botón de enlace ASP.NET el código HTML es <a href="javascript: __doPostBack...
.
Aparentemente, cuando IE encuentra un enlace que no tiene un href="#"
, desencadena el evento onbeforeunload. Luego, cuando confirme el cuadro de diálogo de javascript que mostramos, la página realizará la descarga "real" para navegar a la otra página y generar el evento onbeforeunload por segunda vez.
Una solución ofrecida en Internet es establecer una variable booleana y verificarla antes de mostrar el cuadro de diálogo. Entonces, la segunda vez, no se mostrará. Eso está bien, pero cuando el usuario cancela, la variable seguirá configurada. Entonces, la próxima vez que el usuario quiera abandonar la página, el diálogo ya no se mostrará.
Espero que esto sea un poco claro, y espero que alguien haya encontrado una forma de evitar esto?
Creo que está tomando mi respuesta a literalmente. Quise decir que quieres guardar el valor de confirmación en una bandera que usas para verificar antes de mostrar el cuadro de diálogo. Supongo que llegaste allá :) – annakata