поймать закрытый браузер с функцией onunload, используя главную страницу в ASP.NET

У меня есть веб-сайт с главной страницей. Я хочу поймать пользователя, пытающегося закрыть браузер/вкладку. Когда я пытаюсь использовать onunload в теге body, он срабатывает не только при попытке закрыть браузер, но и при переходе на другую страницу.

Любая идея, как поймать только событие закрытия браузера?


person Greg Oks    schedule 09.06.2011    source источник
comment
Этот вопрос совершенно не зависит от серверной технологии. Может быть, удалить теги asp.net и masterpage?   -  person M4N    schedule 09.06.2011
comment
Проверьте это   -  person Yuriy Rozhovetskiy    schedule 09.06.2011
comment
Функция onunload отлично работает, когда есть только страница. Совсем другая история, когда есть эталонная страница и возникает путаница с закрытием браузера или просто перенаправлением на другую страницу. Поэтому я хотел прояснить свой вопрос и понять, что именно я имею в виду.   -  person Greg Oks    schedule 09.06.2011


Ответы (1)


Вы не можете отличить закрытие браузера от перехода на другую страницу. В обоих случаях текущая страница выгружается.

обновление: возможно, вы можете обрабатывать некоторые случаи с помощью некоторого jquery, т.е. всякий раз, когда нажимается ссылка, устанавливайте некоторый флаг, чтобы иметь возможность отличить его от закрытия окна или ввода нового URL-адреса:

<body onunload="checkForClose()">

...

<script>
var _isNavigation = false;
$(document).ready(function () {
    // whenever a link is clicked set _isNavigation to true
    $('a').click(function () {
        _isNavigation = true;
    });
});

function checkForClose() {
    // show an alert if _isNavigation is not set
    if (!_isNavigation) alert("closing the browser (maybe)");
}
</script>
person M4N    schedule 09.06.2011
comment
это правильно? по крайней мере хром и фаерфокс их различают. контрольная работа. введите что-нибудь в текстовое поле ниже и попробуйте закрыть браузер. вы получите предупреждение. теперь перейдите на другую вкладку. предупреждения не происходит. - person naveen; 09.06.2011
comment
Переход на другую вкладку — это нечто совершенно другое. На текущую страницу не влияет (не выгружается). - person M4N; 09.06.2011