2012-09-17 58 views
4

我需要監視用戶離開頁面(到不同的站點不是相同的站點)或關閉窗口/選項卡。我可以通過$(window).bind('unload', function() {});來實現這一目標,但onload是一個全面的事件:它還捕獲頁面刷新並導航到同一網站上的其他頁面。如何使用javascript/jQuery檢測這兩個事件(頁面刷新和導航到同一網站中的另一個頁面)?JavaScript的卸載和beforeunload替代

回答

2

在每一頁上,

var leaving = true; 

$(function() { 
    $('a[rel!=ext]').click(function() { leaving = false; }); 
    $('form').submit(function() { leaving = false; }); 
}); 

$(function() { window.onbeforeunload = unloadPage; }); 

function unloadPage() { 
    if(leaving) { 
     // Put your logic here 
    } 
} 

然後只要確保到外部網站的所有鏈接都具有rel="ext"屬性。

+0

當用戶在導航欄中輸入一個新的URL(可能是同一個域,或者可能不是)時,這不起作用,只要用戶點擊頁面上的鏈接即可。此外,您可以將表單發佈到不同的域。 –

+0

如果用戶輸入一個新的url(儘管我認爲不適用於Opera?),unloadPage()處理程序會觸發。但是,如果新網址位於當前網站的範圍內,那麼是的,您可能會得到誤報。 – mikeagg

+0

通過編寫更智能的邏輯可以處理髮布到當前網站外部的URL的表單,而不是簡單地設置leaving = false。 – mikeagg