1. 程式人生 > >javascript監控瀏覽器上的關閉和重新整理操作

javascript監控瀏覽器上的關閉和重新整理操作

因為在後臺執行了一個死迴圈程序,需要在退出當前介面的時候將其kill,所以需要在關閉瀏覽器和重新整理時呼叫函式執行操作

onunload和onbeforeunload 事件是在使用者退出頁面時(關閉頁面或重新整理頁面)發生,Onbeforeunload是正要去伺服器讀取新的頁面時呼叫,此時還沒開始讀取;而onunload則已經從伺服器上讀到了需要載入的新的頁面,在即將替換掉當前頁面時呼叫。Onunload是無 法阻止頁面的更新和關閉的。而 Onbeforeunload 可以做到

且在頁面解除安裝之前引發onbeforeunload事件,如果選擇“確定離開”將引發onunload事件,若取消,則不做任何操作,故我的操作是:

  window.onbeforeunload = onbeforeunload_handler;
  window.onunload = onunload_handler;
    function onbeforeunload_handler(){
            var warning="您確認是否要退出當前頁面?";
            return warning;
        }

       function onunload_handler(){
           $.get(url , {'c':'interface','a':'start'} , function( data ) {
           });    //傳遞引數並呼叫PHP中的函式操作,來kill死迴圈程序
       }


附1:如果需要區別重新整理和關閉頁面的操作,可以參考http://blog.csdn.net/laoxiao1987/article/details/9007571

附2:

NS_ERROR_NOT_AVAILABLE: Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIDOMWindow.alert]
在參照網上查詢的資料,在   function onunload_handler()函式中,添加了程式碼alert(warning),結果在firebug中顯示上面的問題,將alert程式碼註釋掉後就沒有問題了,查找了資料,網上的說法有:
1.因為onunload函式是在body已經關閉後才調動的,所以如果使用alert的話(alert父視窗是body)就會報錯或不顯示
2.firfox連續彈出相同的值的框,會報一個“阻止此頁面建立其他對話方塊的提示”
個人覺得第一種解釋更符合我程式碼的情況,如果您閱讀了該篇文章,且遇到相同的問題或者您有其他解釋,希望能多多交流,謝謝