【问题标题】:How to call an event when browser back button is clicked单击浏览器后退按钮时如何调用事件
【发布时间】:2014-10-30 05:13:50
【问题描述】:

点击浏览器后退按钮时如何调用 jquery 事件。我在 asp.net mvc 中使用单页应用程序,当用户按下浏览器的后退按钮时,我想显示一个确认框以离开屏幕。我如何在浏览器后退按钮上调用 jquery 函数。请帮忙。我已经搜索并找到了推送状态事件,但在上述情况下我不知道如何使用它。

【问题讨论】:

标签: jquery


【解决方案1】:
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

【讨论】:

  • 即使我在单击锚标记时导航并且第一次在页面加载时导航,此代码也会显示警报。我希望它只在浏览器的后退按钮上执行。
  • window.history 检查用于确定您是否已经加载了新页面。如果不是 window.history 是 null 并且您不能触发警报消息。你的 js 脚本可能有错误,所以从浏览器检查 javascript 控制台
【解决方案2】:
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 ();
            }
        });
    }
});

【讨论】:

  • 这对我不起作用..它也没有给出任何错误:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2013-03-26
  • 1970-01-01
  • 1970-01-01
  • 2010-09-14
  • 2017-05-08
相关资源
最近更新 更多