2014-09-05 154 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