Как обнаружить событие закрытия страницы с ASP.NET

У меня есть веб-приложение ASP.NET с мастер-страницей и страницей содержимого из мастер-страницы, когда я нажимаю MenuItem открыть новую страницу aspx. если я хочу закрыть вкладку браузера новой страницы, я хочу показать всплывающее окно или диалог, который предупреждает пользователя о том, что он закрывает вкладку браузера. Я не знаю, как обнаружить кнопку закрытия браузера. Я использовал следующий код на новой странице aspx:

<script type="text/javascript">
    function CloseWindow() {
        alert('closing');
        window.close();
    }
</script>

новый код страницы позади:

protected void Page_Load(object sender, EventArgs e)
{
    Page.ClientScript.RegisterOnSubmitStatement(typeof(Page), "closePage", "window.onunload = CloseWindow();");
}

Спасибо в Преимущество.

5 ответов

Это работает отлично.

JavaScript обнаруживает браузер закрыть вкладку / закрыть браузер

<body onbeforeunload="ConfirmClose()" onunload="HandleOnClose()">

var myclose = false;

function ConfirmClose()
{
    if (event.clientY < 0)
    {
        event.returnValue = 'You have closed the browser. Do you want to logout from your application?';
        setTimeout('myclose=false',10);
        myclose=true;
    }
}

function HandleOnClose()
{
    if (myclose==true) 
    {
        //the url of your logout page which invalidate session on logout 
        location.replace('/contextpath/j_spring_security_logout') ;
    }   
}

У меня было много проблем с этим самим, и единственное, что работает, это событие "window.onbeforeunload" из javascripts, но проблема в том, что это выполняется намного больше, чем вы ожидаете. В общем, если вы работаете с главной страницей и т.д., я не думаю, что это можно сделать.

Я думаю, что лучше всего вы пытаетесь подходить к этому по-другому, потому что в противном случае ваше заключительное сообщение будет появляться часто.

Если я вас правильно понял, вы хотите знать, когда вкладка / окно эффективно закрывается. Ну, на самом деле, единственный способ в Javascript обнаруживать подобные вещи - это события onunload и onbeforeunload. Эти события также запускаются, когда вы покидаете сайт по ссылке или в браузере назад. Так что это лучший ответ, который я могу дать, я не думаю, что вы можете непосредственно определить чистое закрытие в Javascript. Поправьте меня, если я не прав здесь. Вы можете пройти через браузер-вкладка-закрытие-обнаружения-используя-javascript-или-любой-другой-язык

Вы можете справиться с этим с помощью JavaScript на вашей странице.
Сначала создайте функцию:

function closeMessage() {
    return "Are you sure you want to leave this page";
}

После этого назначьте этот метод:

window.onbeforeunload = closeMessage;

Пожалуйста, дайте мне знать, если это было полезно

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

        <script type="text/javascript">
          window.onbeforeunload = function (e) {
               var e = e || window.event;
               if (e) e.returnValue = 'Browser is being closed, is it okay?';//for IE & Firefox
               return 'Browser is being closed, is it okay?';// for Safari and Chrome
           };
        </script>

Надеюсь это поможет..

Другие вопросы по тегам