JQuery獲取頁面關閉事件

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

  在這裏面還有別的寫法,能夠參考菜鳥教程onbeforeunload事件還有爲何用了onbeforeunload也沒用?,這些問題,通過點擊可使用了。java

 

  首先由於瀏覽器兼容問題,以下:jquery

IE、Safari 完美支持

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

Opera 不支持

 接下來講一些注意事項。ajax

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

,而後接下來講一下個人疑惑,,谷歌方面也是能夠提示瀏覽器默認彈出框的瀏覽器

好比,可是這是在你打開頁面進行點擊按鈕或者打開一個鏈接,進行操做以後,纔會觸發,若是隻是打開頁面,沒有進行任何操做的話,谷歌和360瀏覽器是不會有這個彈出框的(不過裏面寫的ajax仍是會觸發),這就讓我不理解了,有什麼想法,但願各位大神不吝賜教!異步

相關文章
相關標籤/搜索