2

私はこれでこのコードを呼び出していますwindow.onbeforeunload=HandleOnClose;

これは IE では正常に機能しますが、他のブラウザーでは機能しません。このコードは IE 固有のものですが、他のブラウザでは機能しません。すべてのブラウザでブラウザのクローズイベントを検出するにはどうすればよいですか?

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

2 に答える 2

1

常にユーザーをログアウトすることはできないと思います。ユーザーの Web ブラウザーでクラッシュが発生した場合、クライアント側のコードは実行されません。一部の Web ブラウザーは、クライアント側のコードの実行を待たずに非常に高速にシャットダウンします。

ユーザーが一定期間アクティブでない場合にサーバー側でログアウトするなど、別の解決策を見つける必要があります。

于 2012-09-25T10:46:46.200 に答える
0

ユーザーがいつブラウザを閉じたかを検出することはできません。Java を使用し、Cookie を使用してユーザーがログインしているかどうかを確認する場合は、cookie.setMaxAge(-1) を実行できます。

これにより、ブラウザを閉じたときに Cookie が確実に削除されます。

于 2012-09-25T10:56:20.533 に答える