最近項目提了一個新需求,就是在瀏覽本項目頁面的時候,檢測當用戶關閉當前頁面或者所在的瀏覽器時,會觸發一個函數,在上網搜了不少文章,都說使用onbeforeunload,和onbunload函數,我身邊的大神也說沒問題,可是我寫上去了而後關閉頁面也不彈出alert也不觸發瀏覽器默認彈框,很鬱悶,後來在一位大神的提醒下,才發現問題,但還有個問題想不明白;javascript
先看寫的代碼:html
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也沒用?,這些問題,通過點擊可使用了。java
首先由於瀏覽器兼容問題,以下:jquery
IE、Safari 完美支持
Firefox、Chrome 不支持文字提醒信息
Opera 不支持
接下來講一些注意事項。ajax
一、若是想在onbeforeunload中ajax提交數據,試試用同步ajax請求。由於有些瀏覽器實現會在unload時在異步ajax結果返回前停掉線程,這樣你的回調就永遠調不到;
二、火狐瀏覽器和谷歌不支持問題彈出框,因此在調用的時候alert是不起做用的;
三、在瀏覽器中調用其它的一些操做也是不會實現的,好比你關閉頁面的同時,從新打開一個新頁面,等等;
,而後接下來講一下個人疑惑,,谷歌方面也是能夠提示瀏覽器默認彈出框的瀏覽器
好比,可是這是在你打開頁面進行點擊按鈕或者打開一個鏈接,進行操做以後,纔會觸發,若是隻是打開頁面,沒有進行任何操做的話,谷歌和360瀏覽器是不會有這個彈出框的(不過裏面寫的ajax仍是會觸發),這就讓我不理解了,有什麼想法,但願各位大神不吝賜教!異步