1. 程式人生 > 實用技巧 >js獲取關閉瀏覽器事件

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(){ }); }

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