2014-09-05 156 views
4

單擊瀏覽器後退按鈕時如何調用jquery事件。我正在使用asp.net mvc中的單個頁面應用程序,並且當用戶按下瀏覽器的後退按鈕時,我想顯示一個確認框以離開屏幕。我如何在瀏覽器後退按鈕上調用jquery函數。請幫忙。我已經搜索並發現推狀態事件,但我沒有得到如何使用它在我上面描述的情況。單擊瀏覽器後退按鈕時如何調用事件

+0

可能重複http://stackoverflow.com/questions/17594413/js-or-jquery-browser-back-按鈕單擊檢測器) – Manwal 2014-09-05 09:29:16

+0

請查看http://www.webdevelopmenthelp.net/2013/12/browser-back-button-click-event.html – 2014-09-05 09:29:55

+0

您可以使用jQuery unload方法。 ());( http://api.jquery.com/unload/ $(window).unload(function(){ alert(「Handler for .unload()called。」); }); – 2014-09-05 09:40:23

回答

1
window.userInteractionTimeout = null; 
window.userInteractionInHTMLArea = false; 
window.onBrowserHistoryButtonClicked = null; // This will be your event handler for browser navigation buttons clicked 

$(document).ready(function() { 
    $(document).mousedown(function() { 
     clearTimeout(window.userInteractionTimeout); 
     window.userInteractionInHTMLArea = true; 
     window.userInteractionTimeout = setTimeout(function() { 
      window.userInteractionInHTMLArea = false; 
     }, 500); 
    }); 

$(document).keydown(function() { 
     clearTimeout(window.userInteractionTimeout); 
     window.userInteractionInHTMLArea = true; 
     window.userInteractionTimeout = setTimeout(function() { 
      window.userInteractionInHTMLArea = false; 
     }, 500); 
    }); 

    if (window.history && window.history.pushState) { 
     $(window).on('popstate', function() { 
      if (!window.userInteractionInHTMLArea) { 
       // alert('Browser Back or Forward button was pressed.'); 
       } 
    if(window.onBrowserHistoryButtonClicked){ 
    window.onBrowserHistoryButtonClicked(); 
      } 
     }); 
    } 
}); 
[JS或Jquery的瀏覽器的後退按鈕點擊檢測器(的
+1

很好的解決方案。正是我在找什麼。萬分感謝。你讓我的一天... – 2014-09-05 10:53:17

+1

這不適合我..也沒有給出任何錯誤:( – Simone 2015-07-08 07:22:27

7
jQuery(document).ready(function($) { 

    if (window.history && window.history.pushState) { 

    window.history.pushState('forward', null, './#forward'); 

    $(window).on('popstate', function() { 
     alert('Back button was pressed.'); 
    }); 

    } 
}); 

JavaScript or jQuery browser back button click detector

+0

即使我點擊定位標記並在頁面加載時首次導航,此代碼也會顯示提醒。我希望它只能在瀏覽器的後退按鈕上執行。 – 2014-09-05 09:37:57

+0

window.history檢查是在這裏確定你是否已經加載了一個新頁面。如果不是window.history爲空,並且您不能觸發警報消息。你可能在你的js腳本中有錯誤,所以從瀏覽器中檢查javascript控制檯 – 2014-09-05 09:45:17