如果 beforeunload 事件沒有執行,可能是因為您在事件處理程序中使用了異步操作或阻止了事件的默認行為。以下是幾種解決方法:
避免使用異步操作:確保在 beforeunload 事件處理程序中不使用異步操作,例如 setTimeout、Promise 等。因為在觸發該事件時,頁面可能已經無法保持活動狀態。
確保不阻止默認行為:在 beforeunload 事件處理程序中,不要調用事件的 preventDefault() 方法。如果調用了 preventDefault(),瀏覽器可能會忽略您的處理程序并直接關閉頁面。
盡早綁定事件處理程序:在頁面加載時,盡早綁定 beforeunload 事件處理程序,以確保它能夠在需要時被執行。您可以使用 addEventListener() 方法綁定事件處理程序,例如:
window.addEventListener('beforeunload', function(event) {
// 在這里執行您的代碼
});
window.addEventListener('beforeunload', function(event) {
event.returnValue = '您確定要離開此頁面嗎?';
});
請注意,不同的瀏覽器可能對 beforeunload 事件的處理方式有所不同,這些方法在某些瀏覽器中可能無效。對于某些特定的需求,您可能需要使用其他技術來實現,例如使用 JavaScript 的 unload 事件或使用回調函數來執行相關操作。