瀏覽器的 beforeunload 這事件相信大家都不陌生,網路上也有很多資料了,主要用途就是希望當使用者離開瀏覽器時,能暫時阻止並詢問使用者是否真的要離開。後來因為 beforeunload 被濫用,各家瀏覽器就開始限制此事件的功能,例如就禁止客製化詢問訊息等。還記得當時要為了要讓使用者離開瀏覽器時能彈窗詢問,也是測試很久,這邊把測試的結果列出來,供大家參考。
測試瀏覽器為以下:
若真的要用關閉瀏覽器時彈窗詢問視窗,可使用window.onbeforeunload,配合 return '' 就可以達到這需求。若要支援其他瀏覽器或手機瀏覽器,建議是使用任一種監聽方式,搭配使用上述三種方式: event.preventDefault(), event.returnValue = '' 與 return '',會比較保險了。
以下為單html檔測試範例︰
#Javascript, beforeunload, onbeforeunload, chrome, firefox, ie11, event, preventDefault, returnValue, return, 關閉, 瀏覽器, 詢問, 彈窗
測試瀏覽器為以下:
- Chrome 75
- Firefox 68
- IE11
- window.addEventListener('beforeunload', function(event) {})
- window.onbeforeunload = function(event) {}
- event.preventDefault()
- event.returnValue = ''
- return ''
若真的要用關閉瀏覽器時彈窗詢問視窗,可使用window.onbeforeunload,配合 return '' 就可以達到這需求。若要支援其他瀏覽器或手機瀏覽器,建議是使用任一種監聽方式,搭配使用上述三種方式: event.preventDefault(), event.returnValue = '' 與 return '',會比較保險了。
以下為單html檔測試範例︰
<html> <head> <title>alert block for beforeunload</title> </head> <body> <a href="http://google.com">go to google</a> <script> //有效是指單獨使用該行指令時,關閉瀏覽器時會彈出詢問視窗 window.addEventListener('beforeunload', function(event) { //event.preventDefault(); //chrome無效, ff有效, ie11有效 //event.returnValue = ''; //chrome有效, ff無效, ie11有效 //return ''; //chrome無效, ff無效, ie11有效 }); window.onbeforeunload = function(event) { //event.preventDefault(); //chrome無效, ff有效, ie11有效 //event.returnValue = ''; //chrome有效, ff無效, ie11有效 //return ''; //chrome有效, ff有效, ie11有效 }; </script> </body> </html>
#Javascript, beforeunload, onbeforeunload, chrome, firefox, ie11, event, preventDefault, returnValue, return, 關閉, 瀏覽器, 詢問, 彈窗
留言
張貼留言