Нет - этот метод может запускаться несколько раз при переходе от страницы в IE6 и IE7.
Этот фрагмент кода иллюстрирует это (сохранить как OnUnloadTest.htm):
<body>
<form id="form" action="OnUnloadTest.htm" method="post">
Click <a href="javascript:form.submit()">here</a>
</form>
<script type="text/javascript">
window.onbeforeunload = beforeunload
function beforeunload() {
alert('OnUnload');
}
</script>
</body>
По сути, событие запускается один раз для фактического щелчка якоря, и один раз, когда страница фактически отправляет ответ. Я видел эту проблему только тогда, когда у вас есть javascript в href якоря, хотя, если вы используете кнопки ссылок ASP.NET, то будьте осторожны, поскольку это помещает javascript в href.
Для большинства других видов навигации (например, пользователь щелкает обычную привязку или закрывает браузер, или уходит с закладкой и т. Д.) Событие срабатывает только один раз.