javascript - 检测浏览器中的后退按钮点击

标签 javascript jquery

<分区>

我必须检测用户是否点击了后退按钮。 为此,我正在使用

window.onbeforeunload = function (e) {
}

如果用户点击后退按钮,它就会工作。但如果用户单击 F5,也会触发此事件 或浏览器的重新加载按钮。我该如何解决这个问题?

最佳答案

就 AJAX 而言......

在使用大多数使用 AJAX 导航页面特定部分的网络应用程序时按回键是一个巨大的问题。我不接受“必须禁用按钮就意味着你做错了什么”的说法,事实上,不同方面的开发人员长期以来都遇到过这个问题。这是我的解决方案:

window.onload = function () {
    if (typeof history.pushState === "function") {
        history.pushState("jibberish", null, null);
        window.onpopstate = function () {
            history.pushState('newjibberish', null, null);
            // Handle the back (or forward) buttons here
            // Will NOT handle refresh, use onbeforeunload for this.
        };
    }
    else {
        var ignoreHashChange = true;
        window.onhashchange = function () {
            if (!ignoreHashChange) {
                ignoreHashChange = true;
                window.location.hash = Math.random();
                // Detect and redirect change here
                // Works in older FF and IE9
                // * it does mess with your hash symbol (anchor?) pound sign
                // delimiter on the end of the URL
            }
            else {
                ignoreHashChange = false;   
            }
        };
    }
}

据我所知,这适用于 chrome、firefox、尚未测试 IE

关于javascript - 检测浏览器中的后退按钮点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6359327/

相关文章:

javascript - 在子 Controller 中触发时,Ionic AngularJS 父动画无法正确运行

php - Jquery、php ajax post 500 内部服务器错误返回

javascript - 如何反转以下表单元素禁用功能的过程

javascript - 从函数获取本地范围并在单击时调用另一个函数 setTimeout

javascript - jquery中如何调用$(function)

javascript - 使用 JQuery 验证包含内容

javascript - 如何使用 JQuery 将 div 放置在鼠标单击旁边?

javascript - 如何修复 window.CKFinder 未定义

jquery - 如果只有 h3 元素和空内容 div,如何删除父 div

javascript - 我正在尝试检测 div 是否包含 iFrame