如何在javascript或jquery中跟踪浏览器刷新/返回/制表符关闭和浏览器关闭事件

时间:2014-09-24 07:58:29

标签: javascript jquery

我正在使用onbeforeunload函数。我想在任何一次点击浏览器后退按钮,浏览器刷新按钮,浏览器选项卡关闭按钮和浏览器关闭按钮时提醒不同的消息。那么如何跟踪onbeforeUnload功能中的所有事件。

我的代码结构就像那样

<body  onbeforeunload="return closePage();">
<script type="text/javascript">    
function closePage() {
  if(back button click){
    alert("back button");
  } else if(refresh button click || f5){
    alert("refresh button click");
  } else if(browser tab close){
    alert("tab close");
  } else {
    alert("browser closed");
  }
}
</script>

有什么想法解决这个问题吗?非常感谢。

3 个答案:

答案 0 :(得分:1)

据我所知,你想要的是不可能的。出于安全考虑,大多数浏览器都不允许这类内容。

但是,你可以抓住一些东西。与keydown键上的f5一样。这样你就可以在&#34; onbeforeunload&#34;之前做一些事情。如果你喜欢,函数会运行。

但你不能在&#34; back&#34;上绑定一个事件。按钮,例如。或者&#34; ctrl + r&#34;。

所以,我担心你不得不重新考虑你的选择,并采取其他解决方案。

答案 1 :(得分:0)

非常感谢你的回复。但我找到了一些代码

如果(window.event){

               if (window.event.clientX < 40 && window.event.clientY < 0)
                 {
                    alert("Backbutton is clicked");
                 }
                 else{ return exitPage(); }
            }

否则{

      if(event.currentTarget.performance.navigation.type == 2)
      {
          alert("Back button click in mozilla");
      }
      if(event.currentTarget.performance.navigation.type == 1)
      {
        return exitPage();
      }
}

使用此代码我可以跟踪后退按钮事件,但它只能在IE中工作

答案 2 :(得分:0)

在客户关闭标签之前,您可以做一些小事。 javascript detect browser close tab/close browser但是如果您的操作列表很大并且标签在完成之前关闭,那么您将无能为力。你可以尝试一下,但根据我的经验,不要依赖它。

window.addEventListener("beforeunload", function (e) {
  var confirmationMessage = "\o/";
  /* Do you small action code here */
  (e || window.event).returnValue = confirmationMessage; //Gecko + IE
  return confirmationMessage;                            //Webkit, Safari, Chrome
});

https://developer.mozilla.org/en-US/docs/Web/Reference/Events/beforeunload?redirectlocale=en-US&redirectslug=DOM/Mozilla_event_reference/beforeunload