none
Como finalizar uma sessão quando o usuário fecha o navegador RRS feed

  • Pergunta

  • Estou trabalhando com ASP.NET com WEBFORM to seguinte problema preciso atualizar no banco de dados o status do usuário se está ou não online. Fiz um sistema que atualiza o status no login para online e quando clica no botão logout ele atualiza o status para offline ,mas se o usuário fechar a pagina do navegador o status fica como online e este é o problema. Já tentei fazer por javascript no OnUnload, mas se eu fizer acada pageload da pagina ele entra no OnUnload e deslogar o usuário
    domingo, 14 de julho de 2013 01:38

Respostas

  • Eu consegui resolver a situação da seguinte forma:

        var ieBrowser = false;
        var otherBrowser = false;

        function getHTTPRequest() {
            if (navigator.appName == 'Microsoft Internet Explorer') {
                ieBrowser = true;
            } else {
                otherBrowser = true;
            }

            if (window.XMLHttpRequest && otherBrowser) { // Firefox
                //otherBrowser = true;
                return new XMLHttpRequest();
            } else { // IE
                //ieBrowser = true;
                var parsers = new Array();
                parsers[0] = "MSXML3"; parsers[1] = "Microsoft"; parsers[2] = "MSXML2";
                parsers[3] = "MSXML";
                for (var i = 0; i < parsers.length; i++) {
                    try {
                        return new ActiveXObject(parsers[i] + ".XMLHTTP");
                    } catch (e) {
                        //ignore the error and try to create a new Request object
                        // with the next parser.
                    }
                }
            }
        }
        function LogOut(e) {
            getHTTPRequest();
            if (ieBrowser) {
                if ((x == null) || (x == undefined)) {
                    myPageX = 0;
                }
                else {
                    myPageX = x;
                }
                if ((y == null) || (y == undefined) || (y <= 5)) {
                    myPageY = 0;
                }
                else {
                    myPageY = y;
                }
                if ((myPageX == 0) || (myPageY == 0)) {
                    window.open('../LogOut.aspx', 'LogOut', 'width=' + 100 + ', height=' + 100 + ', top=' + 0 + ', left=' + 0 + ',scrollbars=no, status= no, toolbar= no, location= no, directories= no, menubar= no, resizable=no, fulscreen=no');
                }
            }
            //firefox, opera, chrome
            else {
                if (otherBrowser) {
                    if ((x == null) || (x == undefined)) {
                        myPageX = 0;
                    }
                    else {
                        myPageX = x;
                    }
                    if ((y == null) || (y == undefined) || (y <= 5)) {
                        myPageY = 0;
                    }
                    else {
                        myPageY = y;
                    }
                    if ((myPageX == 0) || (myPageY == 0)) {
                        window.open('../LogOut.aspx', 'LogOut', 'width=' + 100 + ', height=' + 100 + ', top=' + 0 + ', left=' + 0 + ',scrollbars=no, status= no, toolbar= no, location= no, directories= no, menubar= no, resizable=no, fulscreen=no');
                    }
                }
                else {
                    alert("Browser não encontrador");
                }
            }
        }
        this.window.onbeforeunload = LogOut;
        var x;
        var y;
        document.onmousemove = function (e) {
            if (navigator.appName == 'Microsoft Internet Explorer') {
                x = event.clientX;
                y = event.clientY;
            }
            else {
                x = e.pageX;
                y = e.pageY;
            }

    mas não é sempre que o browser entra neste javascript coloquei ele em uma pagina de menu

    sexta-feira, 19 de julho de 2013 18:45

Todas as Respostas

  • Eu consegui resolver a situação da seguinte forma:

        var ieBrowser = false;
        var otherBrowser = false;

        function getHTTPRequest() {
            if (navigator.appName == 'Microsoft Internet Explorer') {
                ieBrowser = true;
            } else {
                otherBrowser = true;
            }

            if (window.XMLHttpRequest && otherBrowser) { // Firefox
                //otherBrowser = true;
                return new XMLHttpRequest();
            } else { // IE
                //ieBrowser = true;
                var parsers = new Array();
                parsers[0] = "MSXML3"; parsers[1] = "Microsoft"; parsers[2] = "MSXML2";
                parsers[3] = "MSXML";
                for (var i = 0; i < parsers.length; i++) {
                    try {
                        return new ActiveXObject(parsers[i] + ".XMLHTTP");
                    } catch (e) {
                        //ignore the error and try to create a new Request object
                        // with the next parser.
                    }
                }
            }
        }
        function LogOut(e) {
            getHTTPRequest();
            if (ieBrowser) {
                if ((x == null) || (x == undefined)) {
                    myPageX = 0;
                }
                else {
                    myPageX = x;
                }
                if ((y == null) || (y == undefined) || (y <= 5)) {
                    myPageY = 0;
                }
                else {
                    myPageY = y;
                }
                if ((myPageX == 0) || (myPageY == 0)) {
                    window.open('../LogOut.aspx', 'LogOut', 'width=' + 100 + ', height=' + 100 + ', top=' + 0 + ', left=' + 0 + ',scrollbars=no, status= no, toolbar= no, location= no, directories= no, menubar= no, resizable=no, fulscreen=no');
                }
            }
            //firefox, opera, chrome
            else {
                if (otherBrowser) {
                    if ((x == null) || (x == undefined)) {
                        myPageX = 0;
                    }
                    else {
                        myPageX = x;
                    }
                    if ((y == null) || (y == undefined) || (y <= 5)) {
                        myPageY = 0;
                    }
                    else {
                        myPageY = y;
                    }
                    if ((myPageX == 0) || (myPageY == 0)) {
                        window.open('../LogOut.aspx', 'LogOut', 'width=' + 100 + ', height=' + 100 + ', top=' + 0 + ', left=' + 0 + ',scrollbars=no, status= no, toolbar= no, location= no, directories= no, menubar= no, resizable=no, fulscreen=no');
                    }
                }
                else {
                    alert("Browser não encontrador");
                }
            }
        }
        this.window.onbeforeunload = LogOut;
        var x;
        var y;
        document.onmousemove = function (e) {
            if (navigator.appName == 'Microsoft Internet Explorer') {
                x = event.clientX;
                y = event.clientY;
            }
            else {
                x = e.pageX;
                y = e.pageY;
            }

    mas não é sempre que o browser entra neste javascript coloquei ele em uma pagina de menu

    sexta-feira, 19 de julho de 2013 18:45