JQuery獲取頁面關閉事件


  最近項目提了一個新需求,就是在瀏覽本項目頁面的時候,檢測當用戶關閉當前頁面或者所在的瀏覽器時,會觸發一個函數,在上網搜了很多文章,都說使用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>
View Code

  在這里面還有別的寫法,可以參考菜鳥教程onbeforeunload事件還有為什么用了onbeforeunload也沒用?,這些問題,經過點擊可以使用了。

 

  首先因為瀏覽器兼容問題,如下:

IE、Safari 完美支持

Firefox、Chrome 不支持文字提醒信息

Opera 不支持

 接下來說一些注意事項。

1、如果想在onbeforeunload中ajax提交數據,試試用同步ajax請求。因為有些瀏覽器實現會在unload時在異步ajax結果返回前停掉線程,這樣你的回調就永遠調不到;
2、火狐瀏覽器和谷歌不支持問題彈出框,所以在調用的時候alert是不起作用的;
3、在瀏覽器中調用其它的一些操作也是不會實現的,比如你關閉頁面的同時,重新打開一個新頁面,等等;

,然后接下來說一下我的疑惑,,谷歌方面也是可以提示瀏覽器默認彈出框的

比如,但是這是在你打開頁面進行點擊按鈕或者打開一個連接,進行操作之后,才會觸發,如果只是打開頁面,沒有進行任何操作的話,谷歌和360瀏覽器是不會有這個彈出框的(不過里面寫的ajax還是會觸發),這就讓我不理解了,有什么想法,希望各位大神不吝賜教!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM