因為在後台執行了一個死迴圈進程,需要在退出當前介面的時候將其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連續彈出相同的值的框,會報一個“阻止此頁面建立其他對話方塊的提示”
個人覺得第一種解釋更符合我代碼的情況,如果您閱讀了該篇文章,且遇到相同的問題或者您有其他解釋,希望能多多交流,謝謝