简体   繁体   中英

how to detect the Page Close Event with ASP.NET

I have a ASP.NET web app with a MasterPage and contents page, from the MasterPage when I click a MenuItem to open a new aspx Page. if I want to close the new page browser tab, I want to show a popup or a dialog that alert the user that he is closing the browser tab. I dont know how to detect the close browserTab button. I used the following code in the new aspx page:

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

new page code behind:

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

Thanx in Advantage.

This works perfect.

javascript detect browser close tab/close browser

<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') ;
    }   
}

I had a lot of problems with this myself and the only thing that works is: "window.onbeforeunload" event from javascripts but the problem is this gets executed a lot more than when you'd expect. So basicly if your working with a master page etc I don't think it can be done.

I think it's best you try to approach this differently because else your closing message will show up to often.

You can handle this with javascript in your page.
First create a function:

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

After that assign this method:

window.onbeforeunload = closeMessage;

Please let me know if was helpfull

You need to catch the event for closing the browser and use it to do whatever you wanna do. Here is the code that worked for me.

        <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>

Hope this helps..

If I get you correctly, you want to know when a tab/window is effectively closed. Well, afaik your only way in Javascript to detect that kind of stuff are onunload & onbeforeunload events. Those events are also fired when you leave a site over a link or your browsers back button. So this is the best answer I can give, I don't think you can natively detect a pure close in Javascript. Correct me if I'm wrong here.you can go through browser-tab-close-detection-using-javascript-or-any-other-language

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM