js獲取關閉瀏覽器事件


很多時候我們都在困擾,如何捕獲瀏覽器關閉事件,網上雖然有很多方法,但都不理想,后來終於找到了一個很好地實現方法,大家可以試試。

Onunload與Onbeforeunload
Onunload,onbeforeunload都是在刷新或關閉時調用,可以在<script>腳本中通過window.onunload來指定或者在<body>里指定。
區別在於onbeforeunload在onunload之前執行,它還可以阻止onunload的執行。 
Onbeforeunload也是在頁面刷新或關閉時調用,Onbeforeunload是正要去服務器讀取新的頁面時調用,此時還沒開始讀取;
而onunload則已經從服務器上讀到了需要加載的新的頁面,在即將替換掉當前頁面時調用。Onunload是無法阻止頁面的更新和關閉的。而 Onbeforeunload 可以做到。

下面是JavaScript代碼:
/*
 * 使用window.onbeforeunload獲取關閉事件,但是這個事件a標簽跳轉也會調用,
 * 所以通過flag標識為false時,href跳轉后禁用后續的onclick事件。
 * */
var isOnloadFlag = $('#isOnloadFlag').val(); //默認是true
//所有的a標簽添加class 屬性onUnload,點擊a標簽的時候通過參數移除onbeforeunload事件

$(".onUnload").on("click", function (e) {    
    //$(this).removeAttr("onclick"); //這個移除不了onbeforeunload事件
    //var flag = $('#isOnloadFlag').val();
    isOnloadFlag = false;
    var url = $('.onUnload').attr('href');
    window.location.href = url;
});
//
window.onbeforeunload = function(e){
    var flagThis = $('#isOnloadFlag').val();
    var flagbefore = isOnloadFlag;
    if(flagThis&&flagbefore){        
        $.getJSONNoCache("/onUnload.action","GET",{},"text",false,function(data){
            if(data)
            {    
                    //這里寫自己的代碼                
            }
            else
            {
            }                    
        },function(){
        });  
    }
}

window.onunload = onunload_handler;    
function onunload_handler(){   
    $.getJSONNoCache("/onUnload.action","GET",{},"text",false,function(data){
        if(data)
            {                                
            }
        else
            {
            }                    
    },function(){    
    });  
}    

經過測試,谷歌和火狐是支持的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM