2014-09-23 90 views
3

我想僅在關閉選項卡/窗口上顯示警報。僅在關閉選項卡/窗口上觸發頁面卸載事件

現在我已經做了一些如下所示,但它甚至在'F5',瀏覽器的後退按鈕上觸發... 但我只希望它在選項卡/窗口關閉。

我想在這這麼多,還檢查了這麼多的計算器聯繫,但沒有得到任何解決方案

window.onbeforeunload = function(e) { 
       return confirmExit() 
      } 
      function confirmExit() { 
       //my logic 
       return false; 
      } 

還添加以下代碼,以防止onbeforeunload上的任何鏈接的點擊中我的網站

$(document).ready(function() { 
       $('a[rel!=ext]').click(function() { 
        window.onbeforeunload = null; 
       }); 
       $('form').submit(function() { 
        window.onbeforeunload = null; 
       }); 
      }); 

所以請幫助我。

+1

可能重複的[檢測關閉窗口事件由Jquery](http://stackoverflow.com/questions/16707249/detect-close-windows-event-by-jquery) – 2014-09-23 11:56:06

+0

@Jit我知道它重複的問題,但有可能以任何方式像防止'F5'與鍵碼或類似的東西? – 2014-09-23 11:58:42

+0

哦,你爲什麼不這樣說 - 可能重複: http://stackoverflow.com/questions/2482059/disable-f5-and-browser-refresh-using-javascript;)@ Er.KT – 2014-09-23 12:00:45

回答

1

出於安全原因,這不是,也不應該是可能的。爲了確定地知道用戶何時以及如何與用戶代理(瀏覽器)交互,您(應該)必須能夠訪問瀏覽器的更高安全性上下文。頁面腳本應該特別阻止訪問。

您會了解何時將卸載頁面(onbeforeunloadonunload事件),但不知道頁面被卸載的明確原因。

請注意,您可以並且應該通過window.addEventListener()beforeunload事件來處理此事件。使用window.onbeforeunloadwindow.onunload而不是window.addEventListener()會受到更多限制,並且不允許與可能加載的其他腳本共享事件,也不會刪除您自己的事件處理程序。您應該習慣於使用window.addEventListener()以及一個命名函數,以便在不限制在頁面上運行自己的腳本的環境中良好地運行。

相關問題