首頁 >web前端 >js教程 >關閉ie視窗清除Session的解決方法_javascript技巧

關閉ie視窗清除Session的解決方法_javascript技巧

WBOY
WBOY原創
2016-05-16 17:04:351549瀏覽

複製程式碼 程式碼如下:

//function window.onunload() { alert('這就是你要做的事,關閉網頁之後做的!網頁之前做的!
        function window.onunload() {

            if ((window.screenLeft >= 10000 && window.screenTop >= 10000) || event. ft "," window.screenTop);

                //使用者非正常關閉時需要觸發的動作

                location = 'Handler1.ashx';
       
   


Handler1.ashx:



複製程式碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web;
using System.Web.Services;
using System.Web;using System.Web.Services;

using System.Web;
using System.Web.Services;
using System.Web;
using System.Web.Services;
using System.Web.SessionState;

namespace WebApplication1
{
    ///

    /// $codebehindclassname$ 的摘要說明

    /// $codebehindclassname$ 的摘要說明
  ://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class Handler1 : IHttpHandler,IRequiresSessionState        public void ProcessRequest(HttpContext context)
        {

           context.Session.Abandon();

            context.Session.Clear() ;
        }

        public bool IsReusable
        {
                      return false;
            }
      :

一般的會員形式的網站,在會員登陸後都會建立會話或Cookie,然後需要在會員退出時點退出連線或按紐退出。在會員直接關閉窗體的時候,沒有觸發涉及到退出的一系列退出。而這些要等到伺服器會話過期才會被清除掉。


有幸的是在網路上終於找到可以捕捉使用者使用Alt F4、標題列按右鍵關閉、雙擊標題列、直接按關閉按鈕的事件的方法。當然對於最小化到工作列再進行關閉是不能捕獲的。


複製代碼


手順:
window.screenLeft = 10000 境界線の幅 (2×2) = 10004
window.screenTop = 10000 ツールバーの高さ タイトル バーの高さ = 10097

onBeforeUnloadでは、これらの画面の座標属性は通常の値であることに注意してください。

screenLeft: 画面の左上隅を基準としたブラウザーのクライアント領域の左上隅の x 座標を取得します。

screenTop: 画面の左上隅を基準としたブラウザーのクライアント領域の左上隅の y 座標を取得します。

フォームが破壊されると特別な値が生成されるのでしょう。通常のクリックテストではこの値を超えることはありません。

問題は、onBeforeUnload で window.location を使用すると、指定された URL にリクエストを正常に送信できますが、このメソッドが onUnload イベントで効果的に実行できないことです。解決策は、新しいウィンドウを開いて閉じることです。

過去に使用された一連の window.location を置き換えるには、次のようなものを書くことができます。ポータルには複数のクロスサーバー Web サイト サーバーが関与するためです。ポータルサイトの効果を発揮するには、統一された入口から退出した後、順次退出する必要があります。

var newWindow;
window.opener=null;
newWindow=window.open(URL,PageName, 'height=0,width=0'); >newWindow.close();
……

このコードはテスト済みです。オブジェクトが破棄される直前にイベントがトリガーされるため、onUnload では window.close を使用しないでください。 onBeforeUnload は、ページがアンロードされる前にトリガーされるイベントです。

いわゆるクリアとは、基本的に、新しいウィンドウを開いて exit 関数を使用してページを直接呼び出すことです。通話を終了するときに 1 ~ 2 秒間一時停止するか、専用の終了ページでウィンドウが閉じる場合があります。このページと通常の終了およびホームページへの切り替えとの違いは、終了後にページが自動的に閉じられ、追加の制御なしで直接開くことができることです。

【注意】window.onUnloadで判定を行わなかった場合、ページの更新など現在のページが変更された際にこのイベントが発生します。したがって、一部の通常の操作をブロックするには、特定の操作をキャプチャする判断を下す必要があります。

続き: ユーザーが IE でウィンドウを直接閉じる前にセッションをクリアする方法

昨日実装アイデアを説明しましたが、実際に動作させてみると、プログラムを正常に実行するには遅延を追加する必要があることがわかりました。実装の詳細と、単純な時間遅延関数を以下に添付します。コードはテスト済みです。


>
次に、ウィンドウの読み込み時または終了時にブラウザを一度更新する場合は、次の操作を行うことができます:



閉じるときに更新

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn