在開發(fā)web應(yīng)用時(shí)据途,有些頁面在用戶關(guān)閉時(shí)可能需要保存用戶的數(shù)據(jù),或者提示用戶防止誤關(guān)
beforeunload 事件
在瀏覽器中我們可以監(jiān)聽beforeunload
事件來知道瀏覽器即將關(guān)閉,并且可以通過給Event
對象的returnValue
賦值來提示彈框
window.addEventListener("beforeunload", e => {
e.returnValue = true
})
然后我們刷新瀏覽器或者退出瀏覽器就可以看到彈框了
用處
通過監(jiān)聽到這個(gè)事件豁延,我們就有機(jī)會(huì)在頁面關(guān)閉前執(zhí)行一段JS洛史,來保存應(yīng)用相關(guān)的數(shù)據(jù)
window.addEventListener("beforeunload", e => {
//do some things
})
只要是同步的JS就可以完全執(zhí)行,如果需要異步回調(diào)骤肛,考慮到用戶可能不會(huì)留下纳本,所以異步操作不能完全保證
同時(shí)JS不能占用太多時(shí)間,比如你用一個(gè)超大循環(huán)在哪卡之類的腋颠,瀏覽器如果檢測到JS在一段時(shí)間內(nèi)并沒有正確執(zhí)行繁成,將會(huì)直接關(guān)閉頁面
參考資料
END
2017-03-10 完成
2017-12-02 立項(xiàng)