最近項目提了一個新需求,就是在瀏覽本項目頁面的時候,檢測當用戶關閉當前頁面或者所在的瀏覽器時,會觸發一個函數,在上網搜了很多文章,都說使用onbeforeunload,和onbunload函數,我身邊的大神也說沒問題,但是我寫上去了然后關閉頁面也不彈出alert也不觸發瀏覽器默認彈框,很郁悶,后來在一位大神的提醒下,才發現問題,但還有個問題想不明白;
先看寫的代碼:

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>關閉頁面彈出</title> 6 </head> 7 <body> 8 <button id="btn">點擊</button> 9 <a href="http://www.runoob.com">點擊調整到菜鳥教程</a> 10 </body> 11 <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> 12 <script type="text/javascript"> 13 var btn = document.getElementById('btn'); 14 btn.addEventListener('click', function(e){ 15 alert('1次') 16 }); 17 btn.addEventListener('click', function(e){ 18 alert('2次') 19 }); 20 window.addEventListener("beforeunload", function(event) { 21 event.returnValue = "我在這寫點東西..."; 22 }); 23 </script> 24 </html>
在這里面還有別的寫法,可以參考菜鳥教程onbeforeunload事件還有為什么用了onbeforeunload也沒用?,這些問題,經過點擊可以使用了。
首先因為瀏覽器兼容問題,如下:
IE、Safari 完美支持
Firefox、Chrome 不支持文字提醒信息
Opera 不支持
接下來說一些注意事項。
1、如果想在onbeforeunload中ajax提交數據,試試用同步ajax請求。因為有些瀏覽器實現會在unload時在異步ajax結果返回前停掉線程,這樣你的回調就永遠調不到;
2、火狐瀏覽器和谷歌不支持問題彈出框,所以在調用的時候alert是不起作用的;
3、在瀏覽器中調用其它的一些操作也是不會實現的,比如你關閉頁面的同時,重新打開一個新頁面,等等;
,然后接下來說一下我的疑惑,,谷歌方面也是可以提示瀏覽器默認彈出框的
比如,但是這是在你打開頁面進行點擊按鈕或者打開一個連接,進行操作之后,才會觸發,如果只是打開頁面,沒有進行任何操作的話,谷歌和360瀏覽器是不會有這個彈出框的(不過里面寫的ajax還是會觸發),這就讓我不理解了,有什么想法,希望各位大神不吝賜教!