1. 程式人生 > >瀏覽器關閉事件相容性

瀏覽器關閉事件相容性

一般會有這樣的一個場景,就是使用者在關閉瀏覽器的時候我們需要讓使用者賬號自動登出。

所以會用到瀏覽器的關閉事件。

現在市場上又有各種花裡胡哨的瀏覽器,他們之間的相容性又都不一樣,所以做個相容煩的要死。

接下來就說說這個關閉事件相容,(只供參考)

程式碼1:判斷使用者當前用的什麼花裡胡哨瀏覽器

var userAgent = navigator.userAgent; //取得瀏覽器的userAgent字串
var isOpera = userAgent.indexOf("Opera") > -1; //判斷是否Opera瀏覽器
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判斷是否IE瀏覽器
var isIE11 = userAgent.indexOf("rv:11.0") > -1; //判斷是否是IE11瀏覽器
var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判斷是否IE的Edge瀏覽器

程式碼2:根據使用者的花裡胡哨瀏覽器去分別執行邏輯

if(!isIE && !isEdge && !isIE11) {//相容chrome和firefox
    var _beforeUnload_time = 0, _gap_time = 0;
    var is_fireFox = navigator.userAgent.indexOf("Firefox")>-1;//是否是火狐瀏覽器
    window.onunload = function (){
        _gap_time = new Date().getTime() - _beforeUnload_time;
        if(_gap_time <= 5){
            $.post('/AdminController/logOn/?adminId='+adminId);//瀏覽器關閉
        }else{//瀏覽器重新整理

        }
    }
    window.onbeforeunload = function (){
        _beforeUnload_time = new Date().getTime();
        if(is_fireFox){//火狐關閉執行
            $.post('/AdminController/logOn/?adminId='+adminId);//瀏覽器關閉
        }
    };
}else {//相容ie8,9,10
        window.onbeforeunload = function() {
        $.ajax({
            type: "post",
            url: "/AdminController/logOn/",
            data:{"adminId": adminId},
            success: function() {
            },
            async:false
        });
    }
    window.onunload = onclose;
    function onclose(){

    }
}