Jak wykryć okno przeglądarki / zdarzenie zamknięcia karty?

Próbuję za pomocą funkcji onbeforeunload i Unload. Ale to nie zadziałało. Po kliknięciu łącza lub odświeżeniu to zdarzenie zostało uruchomione. Chcę wydarzenie, które jest uruchamiane tylko wtedy, gdy okno przeglądarki lub karta jest zamknięta. Kod musi działać we wszystkich przeglądarkach.

Używam następującego kodu w Masterpage.

<script type="text/jscript">

    var leaving = true;
    var isClose = false;

    function EndChatSession() {
        var request = GetRequest();
        request.open("GET", "../Chat.aspx", true);
        request.send();
    }
    document.onkeydown = checkKeycode
    function checkKeycode(e) {
        var keycode;
        if (window.event)
            keycode = window.event.keyCode;
        else if (e)
            keycode = e.which;
        if (keycode == 116) {
            isClose = true;
        }
    }
    function somefunction() {
        isClose = true;
    }
    window.onbeforeunload = function (e) {
       if (!e) e = event;
        if (leaving) {
             EndChatSession();
             e.returnValue = "Are You Sure";

        }
    }
    function GetRequest() {
        var xmlHttp = null;
        try {
            // Firefox, Opera 8.0+, Safari
            xmlHttp = new XMLHttpRequest();
        }
        catch (e) {
            //Internet Explorer
            try {
                xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (e) {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        return xmlHttp;
    }    
</script>

iw moim tagu ciała:

Powyższy kod działa w IE, ale nie w chromie ...

questionAnswers(6)

yourAnswerToTheQuestion