監聽瀏覽器的關閉事件

在用戶點擊瀏覽器關閉按鈕時需要給出提示,確認退出時就需要監聽瀏覽器的關閉事件了,

 

Onunload與Onbeforeunload
Onunload,onbeforeunload都是在刷新或關閉時調用,可以 在<script>腳本中通過window.onunload來指定或者在<body>裏指定。區別在於 onbeforeunload在onunload之前執行,它還可以阻止onunload的執行。
Onbeforeunload也是在頁面刷新或關閉時調用,Onbeforeunload是正要去服務器讀 取新的頁面時調用,此時還沒開始讀取;而onunload則已經從服務器上讀到了需要加載的新的頁面,在即將替換掉當前頁面時調用。Onunload是無 法阻止頁面的更新和關閉的。而 Onbeforeunload 可以做到。曾經做一個考試系統,涉及到防止用戶半途退出考試(有意或者無意),代碼如下:
<script type="text/javascript">   
<!--     
    window.onbeforeunload = onbeforeunload_handler;   
    window.onunload = onunload_handler;   
    function onbeforeunload_handler(){   
        var warning="確認退出?";           
        return warning;   
    }   
       
    function onunload_handler(){   
        var warning="謝謝光臨";   
        alert(warning);   
    }   
// -->   
</script>   
 

在用戶確定關閉窗體後,頁面中有一個表單需要提交,但是發現當表單提交時又會觸發 window.onbeforeunload事件,也就是說當關閉窗口和提交表單時會彈出兩次相同的提示信息,所以代碼調整如下:

JavaScript代碼:

<script type="text/javascript">      
<!--   
      
    var MSG_UNLOAD="內容沒有保存,是否確認關閉窗口!";
    var UnloadConfirm = {};
    UnloadConfirm.set = function(confirm_msg){
    window.onbeforeunload = function(event){	
    event = event || window.event;	
    event.returnValue = confirm_msg;	
    }
       }
    UnloadConfirm.clear = function(){
    	window.onbeforeunload = function(){};
    }                    
    function onunload_handler(){      
        UnloadConfirm.clear();
        document.forms[0].submit();  
    }  
    function closeWin(){
    	window.close();
    } 
    
    function initPage(){
          UnloadConfirm.set(MSG_UNLOAD);
	 		 
     }
     initPage();
     window.onunload = onunload_handler;
// -->      
</script> 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章