简体   繁体   English

我想在每个浏览器中关闭浏览器后注销我的应用程序?

[英]I want to log out my application after browser close in every browser?

I am calling this code by this window.onbeforeunload=HandleOnClose;我通过此window.onbeforeunload=HandleOnClose;调用此代码window.onbeforeunload=HandleOnClose;

This is working fine in IE but not in other browsers.这在 IE 中工作正常,但在其他浏览器中无效。 This code is specific for IE but this is not working in other browsers.此代码特定于 IE,但这不适用于其他浏览器。 How can we detect close event of browser in all the browser ?我们如何在所有浏览器中检测浏览器的关闭事件?

function ConfirmClose()
    {
        if (isIE7Min) //To check for IE Version 7.0 and above
        {   
          var n = window.event.screenX - window.screenLeft; 
          var b = n > document.documentElement.scrollWidth-20;
            if ((b && window.event.clientY < 0) || window.event.altKey) 
            {
                if (!self.closed)
                {
                    refresh = true;
                }
            }
        }
        else   //IE Version 6.0 and below
        {
            if (event.clientY < 0 && event.clientX < 0)
            {
                if (!self.closed)
                {
                    refresh = true;
                }
            }
        }
    }

    /*Function for onunload*/

    function HandleOnClose()
    {

        ConfirmClose();

        if (isIE7Min)
        {

            if ((window.event.clientX > 0 && window.event.clientY < 0) || window.event.altKey) 
            {
                if (refresh == true) 
                {           
                    window.open("/DealPricingJavaUAT/DealPricingJsp/Home/logout.jsf");
                    //Code That redirects to the Session Invalidation Page
                }
            }
        }
        else
        {

            if (event.clientY < 0 && event.clientX < 0 || window.event.altKey)
            {
                if (refresh == false) 
                {                      
               window.open("/DealPricingJavaUAT/DealPricingJsp/Home/logout.jsf");
                // Code That redirects to the Session Invalidation Page    
                }
            }
        }
    }

I don't think it is possible to always log user out.我认为不可能总是注销用户。 If there is a crash on user's web browser, the client-side code will never get executed.如果用户的 Web 浏览器发生崩溃,客户端代码将永远不会执行。 Some web browsers shutdown itself very fast and don't wait to execute the client-side code.某些 Web 浏览器会非常快地自行关闭,并且不会等待执行客户端代码。

You should find an alternative solution, like logging out on server side if user is not active for certain period of time.您应该找到替代解决方案,例如如果用户在一段时间内不活动,则在服务器端注销。

Its not possible to detect when the user closes the browser.无法检测到用户何时关闭浏览器。 If you are using java and using cookies to check if the user is logged-in, you can do cookie.setMaxAge(-1).如果您使用 java 并使用 cookie 来检查用户是否已登录,则可以执行 cookie.setMaxAge(-1)。

This will make sure that cookies are deleted when browser closes.这将确保在浏览器关闭时删除 cookie。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 避免Spring应用程序在浏览器关闭时注销 - Avoid Spring application log out on browser close 我希望在浏览器中打开外部链接 - I want external links to open in my browser 防止在@After之后关闭浏览器 - Prevent to close browser after @After 我想在每次点击事件中打开新窗口的浏览器……在jsp中 - i want to open new window browser at every click event… in jsp 我正在使用struts框架,注销后按我的浏览器“后退”按钮将转到上一个打开的页面。 如何发送到登录页面? - I am using struts freamwork, after log out when i pressed browser back button it is going to last opened page. How to send it to log in page? 我应该在每个成功的消息句柄后关闭套接字吗? - Should I close my socket after every successful message handle? 我需要杀死会话并在浏览器关闭或制表符关闭后执行一个功能 - I need to kill session and do one function after browser close or tab close 我希望我的应用程序的用户使用MyVideoPLayer播放每个视频 - I want my application's user to play every video with MyVideoPLayer 浏览器关闭后如何保留会话? - How to retain session after browser close? assertTrue之后Java Selenium关闭浏览器 - Java Selenium close browser after assertTrue
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM