Вот пример тестового html:
<!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>
Это доступно как рабочая страница здесь: timjeanes.com / ie9_onbeforeunload.htm
В Firefox, Chromeи Сафари, я получаю поведение, которое я хочу.То есть, щелкнув любую из первых двух ссылок, вы увидите диалоговое окно с предупреждением;Если щелкнуть по третьей ссылке (или иным образом перейти прочь), появится сообщение «Вы уверены, что хотите покинуть эту страницу?»сообщение.
Тем не менее, в IE9 «Вы уверены, что хотите покинуть эту страницу?»сообщение также отображается, когда вы нажимаете одну из первых двух ссылок, даже если навигация не выполняется - мы просто запускаем некоторый JavaScript.
Есть ли что-то, что я делаю неправильно?Или есть хороший обходной путь для IE?
Один из вариантов - использовать href = "#" и поместить мой javascript в onclick.Я не заинтересован в этом, так как он выводит пользователя наверх страницы, а моя настоящая страница довольно высокая.
Я не тестировал в других версиях IE.