单击浏览器后退按钮时触发事件

时间:2014-11-12 07:34:59

标签: javascript php jquery html

我在点击浏览器后退按钮时尝试运行一些代码。

如何在不更改浏览器历史记录的情况下找到浏览器的后退按钮?

我尝试了下面的代码。  我在else块中遇到一个例外:"事件未定义"。



window.onunload = HandleBackFunctionality();
  function HandleBackFunctionality()
  {
    if(window.event)
    {
      if(window.event.clientX < 40 && window.event.clientY < 0)
      {
        alert("Browser back button is clicked…");
      } else {
        alert("Browser refresh button is clicked…");
      }
    } else {
      if(event.currentTarget.performance.navigation.type == 1)
      {
        alert("Browser refresh button is clicked…");
      }
      if(event.currentTarget.performance.navigation.type == 2)
      {
        alert("Browser back button is clicked…");
      }
    }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:2)

使用

$(window).on("navigate", function (event, data) {
  var direction = data.state.direction;
  if (direction == 'back') {
    // do something
  }
  if (direction == 'forward') {
    // do something else
  }
});

答案 1 :(得分:1)

好。除了你最初不应该触发事件和.unload = FunctionName而不是.unload=FunctionName()并且你需要传递event - 参数这一事实我在浏览器中检查了代码。

currentTarget是空的 - 这完全有意义,因为没有像onclick这样的事件目标,但它只是重新加载/卸载的网站。

请使用此代码自行调试代码并使其符合您的需求: window.onunload = HandleBackFunctionality;

function HandleBackFunctionality(event)
{
  console.log(event, window.event);
}

您将看到未设置currentTarget(事件为)。

答案 2 :(得分:0)

这是唯一适合我使用 IOS safari 的解决方案。

  <script>
     window.addEventListener( "pageshow", function ( event ) {
     var pagehistory = event.persisted || 
                     ( typeof window.performance != "undefined" && 
                          window.performance.navigation.type === 2 );
     if ( pagehistory ) {
    // back button event - Do whatever.   
      }
      });
  </script>