Я разместил это здесь , но подумал, что это может заслуживать отдельного вопроса.
То, что я пытаюсь сделать, это показать диалоговое окно, которое спрашивает пользователя, хочет ли он / она покинуть страницу, если есть несохраненные изменения. Это все работает отлично. Но проблема описана ниже:
Кто-нибудь сталкивался с проблемой, когда Internet Explorer дважды запускает событие onbeforeunload? Пока гуглил, я обнаружил, что это как-то связано с тем, что для (среди прочего) кнопки ссылок ASP.NET HTML-код равен <a href="javascript: __doPostBack...
.
Очевидно, что когда IE получает ссылку, которая не имеет href="#"
, он запускает событие onbeforeunload. Затем, когда вы подтвердите диалоговое окно javascript, которое мы показываем, страница выполнит «настоящую» выгрузку для перехода на другую страницу и вызовет событие onbeforeunload во второй раз.
Решение, предлагаемое в Интернете, заключается в установке логической переменной и проверке ее перед отображением диалогового окна. Так что во второй раз это не будет показано. Это все хорошо, но когда пользователь отменяет, переменная все равно будет установлена. Поэтому в следующий раз, когда пользователь захочет покинуть страницу, диалоговое окно больше не будет отображаться.
Надеюсь, это немного ясно, и я надеюсь, что кто-то нашел способ обойти это?