最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)閉ie窗口清除Session的解決方法

 更新時(shí)間:2014年01月10日 10:12:57   作者:  
本篇文章主要是對關(guān)閉ie窗口清除Session的解決方法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助

復(fù)制代碼 代碼如下:

//function window.onunload() { alert('這就是你要做的事,關(guān)閉網(wǎng)頁之后做的! '); location = 'SessionClear.aspx'; }
        //function window.onbeforeunload() { alert('這就是你要做的事,關(guān)閉網(wǎng)頁之前做的! ') }

        function window.onunload() {

            if ((window.screenLeft >= 10000 && window.screenTop >= 10000) || event.altKey) {
                alert(window.screenLeft+","+window.screenTop);
                //用戶非正常關(guān)閉時(shí)需要觸發(fā)的動(dòng)作
                location = 'Handler1.ashx';
            }
        }

    </script>


Handler1.ashx:
復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.SessionState;

namespace WebApplication1
{
    /// <summary>
    /// $codebehindclassname$ 的摘要說明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class Handler1 : IHttpHandler,IRequiresSessionState
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            context.Session.Abandon();
            context.Session.Clear();
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}


解釋:

一般的會(huì)員形式的網(wǎng)站,在會(huì)員登陸后都會(huì)建立會(huì)話或者Cookie,然后需要在會(huì)員退出時(shí)點(diǎn)退出連接或按紐退出。在會(huì)員直接關(guān)閉窗體的時(shí)候,沒有觸發(fā)涉及到退出的一系列退出。而這些要等到服務(wù)器會(huì)話過期才會(huì)被清除掉。

有幸的是在網(wǎng)絡(luò)上終于找到可以捕獲用戶使用Alt+F4、標(biāo)題欄按右鍵關(guān)閉、雙擊標(biāo)題欄、直接按關(guān)閉按鈕的事件的方法。當(dāng)然對于最小化到任務(wù)欄再進(jìn)行關(guān)閉是不能捕獲的。

復(fù)制代碼 代碼如下:

<script language="javascript">
<!--
function window.onunload(){
if((window.screenLeft>=10000 && window.screenTop>=10000)||event.altKey)
{
//用戶非正常關(guān)閉時(shí)需要觸發(fā)的動(dòng)作
}
}
-->
</script>

說明:
window.screenLeft = 10000 + 邊框?qū)?(2×2) = 10004
window.screenTop = 10000 + 工具欄高 + 標(biāo)題欄高 = 10097

需要說明的,在onBeforeUnload中屏幕這些坐標(biāo)屬性都是正常數(shù)值。

screenLeft:獲取瀏覽器客戶區(qū)左上角相對于屏幕左上角的 x 坐標(biāo)。

screenTop:獲取瀏覽器客戶區(qū)左上角相對于屏幕左上角的 y 坐標(biāo)。

我猜測,在窗體銷毀時(shí)捕獲的將產(chǎn)生一個(gè)特殊的數(shù)值。在正常情況下的點(diǎn)擊測試,數(shù)值都不會(huì)超過該數(shù)值。

現(xiàn)在問題是,在onBeforeUnload中使用window.location可以正常地提交請求到指定URL,但在onUnload事件中該方法不能有效執(zhí)行。解決的方法是新開一個(gè)窗口,在將之關(guān)閉掉。

我們可以寫上這樣的話,來代替以往使用的,一系列的window.location。因?yàn)殚T戶網(wǎng)站涉及到多個(gè)跨服務(wù)器的網(wǎng)站服務(wù)器。在統(tǒng)一入口退出后,需要依次地進(jìn)行順序退出,才能達(dá)到門戶網(wǎng)站期望的效果。

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

該段代碼已經(jīng)經(jīng)過測試,在onUnload里不要使用window.close,因?yàn)閷ο箐N毀前會(huì)立即觸發(fā)該事件。而onBeforeUnload是頁面將要被卸載前觸發(fā)的事件。

而所謂的清除實(shí)質(zhì)上就是把做好退出功能的頁面,直接以打開新窗口方式的調(diào)用。可能在調(diào)用到關(guān)閉的時(shí)候能停頓一兩秒,或者關(guān)閉窗口放在專門的退出頁面。該頁面與正常退出又切回到首頁,不同的是退出后會(huì)自動(dòng)進(jìn)行關(guān)閉,不需要再另外進(jìn)行控制直接打開即可。

[注意]在window.onUnload中如果不加判斷,則會(huì)在刷新頁面等導(dǎo)致當(dāng)前頁面變化都會(huì)觸發(fā)該事件。因此必須要進(jìn)行判斷,捕捉特定的操作,才能屏蔽掉一些正常的操作。

續(xù):在IE中如何在用戶直接關(guān)閉窗口前清除Session

昨天曾經(jīng)講解了實(shí)現(xiàn)思路,但在實(shí)際操作中發(fā)現(xiàn),必須要加上延遲才能確保程序可以正常執(zhí)行完畢。下面附上實(shí)現(xiàn)的細(xì)節(jié),并附上簡單的時(shí)間延遲函數(shù)。代碼已經(jīng)經(jīng)過測試。

復(fù)制代碼 代碼如下:

<script language="javascript">
function window.onUnload()
{
var newWindow;
if((window.screenLeft>=10000 && window.screenTop>=10000)||event.altKey)
{
newWindow=window.open(‘退出程序地址','網(wǎng)頁名稱',
'width=0,height=0,top=4000,left=4000');//新窗口將在視區(qū)之外打開
newWindow.opener=null;
sleep(5000);
newWindow.close();//新窗口關(guān)閉
}
}
function sleep(milisecond)
{
var currentDate,beginDate=new Date();
var beginHour,beginMinute,beginSecond,beginMs;
var hourGaps,minuteGaps,secondGaps,msGaps,gaps;
beginHour=beginDate.getHours();
beginMinute=beginDate.getMinutes();
beginSecond=beginDate.getSeconds();
beginMs=beginDate.getMilliseconds();

do
{
currentDate=new Date();
hourGaps=currentDate.getHours() - beginHour;
minuteGaps=currentDate.getMinutes() - beginMinute;
secondGaps=currentDate.getSeconds() - beginSecond;
msGaps=currentDate.getMilliseconds() - beginMs;
if(hourGaps<0) hourGaps+=24; //考慮進(jìn)時(shí)進(jìn)分進(jìn)秒的特殊情況
gaps=hourGaps*3600+ minuteGaps*60+ secondGaps;
gaps=gaps*1000+msGaps;
}while(gaps<milisecond);
}
</script>


二,在窗口加載或退出時(shí),想讓瀏覽器刷新一次可以如下操作:
<script type="text/javascript" language="javascript">
       window.opener.document.location.reload();
</script>
<boey onload="opener.location.reload();">   開窗時(shí)刷新
<body onUnload="opener.location.reload();">關(guān)閉時(shí)刷新

相關(guān)文章

  • JS利用中介模式開發(fā)全局控制器

    JS利用中介模式開發(fā)全局控制器

    這篇文章主要為大家介紹了JS利用中介模式開發(fā)全局控制器圖文示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 完美實(shí)現(xiàn)js拖拽效果 return false用法詳解

    完美實(shí)現(xiàn)js拖拽效果 return false用法詳解

    這篇文章主要為大家詳細(xì)介紹了完美實(shí)現(xiàn)js拖拽效果的代碼,一起學(xué)習(xí)return false的用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • javascript實(shí)現(xiàn)依次輸入input自動(dòng)定焦

    javascript實(shí)現(xiàn)依次輸入input自動(dòng)定焦

    這篇文章主要介紹了javascript實(shí)現(xiàn)依次輸入input自動(dòng)定焦的方法及示例代碼,非常實(shí)用,這里推薦給小伙伴們
    2014-12-12
  • JavaScript關(guān)于某元素點(diǎn)擊事件的監(jiān)聽和觸發(fā)

    JavaScript關(guān)于某元素點(diǎn)擊事件的監(jiān)聽和觸發(fā)

    本文主要介紹了JavaScript關(guān)于某元素點(diǎn)擊事件的監(jiān)聽和觸發(fā),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 微信小程序全選多選效果實(shí)現(xiàn)代碼解析

    微信小程序全選多選效果實(shí)現(xiàn)代碼解析

    這篇文章主要介紹了微信小程序全選多選效果實(shí)現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 值得學(xué)習(xí)的JavaScript調(diào)試技巧分享

    值得學(xué)習(xí)的JavaScript調(diào)試技巧分享

    這篇文章主要給大家介紹了一些JavaScript調(diào)試技巧,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • JS異步函數(shù)隊(duì)列功能實(shí)例分析

    JS異步函數(shù)隊(duì)列功能實(shí)例分析

    這篇文章主要介紹了JS異步函數(shù)隊(duì)列功能,結(jié)合實(shí)例形式分析了異步函數(shù)隊(duì)列的應(yīng)用場景、實(shí)現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • 微信小程序?qū)崿F(xiàn)分頁加載效果

    微信小程序?qū)崿F(xiàn)分頁加載效果

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)分頁加載效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 你不知道的前端console用法分享

    你不知道的前端console用法分享

    console一定是各位前端最熟悉的小伙伴了,有些網(wǎng)站還會(huì)在控制臺(tái)輸出一些有意思的東西,下面這篇文章主要給大家介紹了關(guān)于前端console用法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • 如何解決前端筆記本屏幕顯示縮放比例125%,150%對頁面布局的影響

    如何解決前端筆記本屏幕顯示縮放比例125%,150%對頁面布局的影響

    如果要完整解決該縮放和布局問題,仍需適配,下面這篇文章主要給大家介紹了關(guān)于如何解決前端筆記本屏幕顯示縮放比例125%,150%對頁面布局的影響,需要的朋友可以參考下
    2022-11-11

最新評(píng)論

武汉市| 汉源县| 宜宾县| 永胜县| 定西市| 吴堡县| 萨迦县| 融水| 邮箱| 荔波县| 甘洛县| 汾阳市| 荔浦县| 河南省| 邢台市| 内黄县| 凤翔县| 宝坻区| 微山县| 洞口县| 彭水| 沈阳市| 贡觉县| 石台县| 蕲春县| 鹤峰县| 阜新| 时尚| 南京市| 大兴区| 伊宁市| 长丰县| 屯门区| 赤水市| 嘉鱼县| 明溪县| 咸宁市| 青阳县| 玉门市| 正宁县| 临邑县|