onbeforeunload,在頁面刷新或關閉之前執行,早於onunload(刷新或關閉時調用,同時觸發載入事件onload)
可用於離開頁面提醒、數據存儲操作等
onbeforeunload 可以阻止onload
一、添加與移除
window.addEventListener('beforeunload', unloadHandle, false);
window.removeEventListener('beforeunload', unloadHandle, false);
二、老版本IE兼容
1 if (window.addEventListener) { 2 window.addEventListener('beforeunload', function () { 3 // do something 4 }) 5 } else if (window.attachEvent) { 6 // 主要是為了兼容老的IE 7 window.attachEvent('onbeforeunload', function () { 8 // do something 9 }) 10 } else { 11 window.onbeforeunload = function () { 12 // do something 13 } 14 }
三、IOS系統
在IOS平台下,onload、onbeforeunload已經廢棄,使用了pageshow和pagehide代替
因此,IOS平台應用的onbeforeunload要更換為pagehide
window.addEventListener('pagehide', unloadHandle, false);
可以兩個都監聽,也可以判斷環境添加不同的監聽
if ("onpagehide" in window) { //pagehide } else { //beiforeunload }