首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在浏览器中检测后退按钮单击

在浏览器中检测后退按钮单击
EN

Stack Overflow用户
提问于 2011-06-15 22:28:29
回答 5查看 315.9K关注 0票数 75

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

代码语言:javascript
复制
window.onbeforeunload = function (e) {
}

如果用户单击“后退”按钮,它就会起作用。但是,如果用户单击浏览器的F5或reload按钮,也会触发此事件。我该如何解决这个问题?

EN

回答 5

Stack Overflow用户

发布于 2013-08-22 21:52:37

请尝试一下(如果浏览器不支持"onbeforeunload"):

代码语言:javascript
复制
jQuery(document).ready(function($) {

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

    $(window).on('popstate', function() {
      var hashLocation = location.hash;
      var hashSplit = hashLocation.split("#!/");
      var hashName = hashSplit[1];

      if (hashName !== '') {
        var hash = window.location.hash;
        if (hash === '') {
          alert('Back button was pressed.');
        }
      }
    });

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

});
票数 61
EN

Stack Overflow用户

发布于 2013-04-23 00:34:01

我所知道的最好的方法

代码语言:javascript
复制
         window.onbeforeunload = function (e) {
            var e = e || window.event;
            var msg = "Do you really want to leave this page?"

            // For IE and Firefox
            if (e) {
                e.returnValue = msg;
            }

            // For Safari / chrome
            return msg;
         };
票数 9
EN

Stack Overflow用户

发布于 2014-01-22 00:56:12

我通过这种方式检测到后退按钮:

代码语言:javascript
复制
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.
    };
}

它可以工作,但我必须在Chrome中创建一个cookie来检测我是第一次进入页面,因为当我进入页面时,没有cookie的控制,浏览器在没有单击任何后退按钮的情况下执行后退操作。

代码语言:javascript
复制
if (typeof history.pushState === "function"){
history.pushState("jibberish", null, null); 
window.onpopstate = function () {
    if ( ((x=usera.indexOf("Chrome"))!=-1) && readCookie('cookieChrome')==null ) 
    {
        addCookie('cookieChrome',1, 1440);      
    } 
    else 
    {
        history.pushState('newjibberish', null, null);  
    }
};

}

非常重要的是,history.pushState("jibberish", null, null);复制了浏览器的历史记录。

有人知道我能把它修好吗?

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6359327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档