博主最近遇到一個需求,需要在用戶離開之前給一個提示,是否確認離開,並且用戶確認離開的話,需要發出一個請求
下面直接上代碼:
<!DOCTYPE HTML> <html> <body> <script> // 只有屏幕和用戶互動過后,用戶離開頁面(關閉、刷新、跳轉其他頁面)才會觸發 window.onbeforeunload = event => { console.log('onbeforeload!!!!!') if (event) { event.returnValue = '關閉提示'; } } // 不管有沒有和用戶互動過,只要用戶離開頁面(關閉、刷新、跳轉其他頁面)就會觸發 window.onunload = () => { console.log('onunload!!!!!') let xhr = new XMLHttpRequest(); xhr.open('get', '/test', true) xhr.send() // 加一段同步代碼阻塞一下,不然刷新會發不出去異步請求 let now = new Date() while (new Date() - now < 100) { } } </script> </body> </html>
值得主要的點:
1.離開之前的提示無法自定義,只能是瀏覽器提供的文案,大概效果如下:
2.unload事件如果要發異步請求的話,需要后面給補一段同步代碼阻塞一下,否則會在請求會發不出去的