onunload事件和onbeforeunload事件都是window對象的事件,用于在瀏覽器窗口即將關閉時觸發相應的操作。
onunload事件在頁面或瀏覽器窗口關閉時觸發,可以用于執行一些清理操作,比如斷開與服務器的連接、保存數據等。該事件無法阻止窗口的關閉,因為它會在窗口關閉之前觸發。例如:
window.onunload = function() {
// 執行一些清理操作
// 斷開與服務器的連接
// 保存數據等
}
onbeforeunload事件在頁面或瀏覽器窗口即將關閉時觸發,可以用于詢問用戶是否確認離開頁面或關閉窗口。該事件的返回值會被瀏覽器解析為一條提示消息,可以用于阻止窗口的關閉。例如:
window.onbeforeunload = function(event) {
event.returnValue = "確定離開頁面嗎?";
}
在這個例子中,當用戶嘗試關閉窗口或離開頁面時,瀏覽器會彈出一個提示框,顯示"確定離開頁面嗎?"的文本,用戶可以選擇離開或留在當前頁面。
需要注意的是,onbeforeunload事件的處理函數需要設置event.returnValue的值為一個非空字符串,才能生效。如果將event.returnValue設置為空字符串或不設置,瀏覽器會忽略返回值,不會顯示提示框。
另外,onbeforeunload事件在不同瀏覽器下的行為可能有所不同,某些瀏覽器可能不會顯示自定義的提示消息,而是顯示默認的提示消息。因此,在使用onbeforeunload事件時,需要注意瀏覽器的兼容性。