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

Javascript 单击浏览器后退按钮时触发事件,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我试图在单击浏览器后退按钮时运行一些代码 如何在不更改浏览器历史记录的情况下找到浏览器的“后退”按钮 我尝试了下面的代码。 我在else块中得到一个异常,它说:“未定义事件” window.onunload=HandleBackFunctionality(); 函数HandleBackFunctionality() { if(window.event) { if(window.event.clientX

我试图在单击浏览器后退按钮时运行一些代码

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

我尝试了下面的代码。 我在
else
块中得到一个异常,它说:“未定义事件”

window.onunload=HandleBackFunctionality();
函数HandleBackFunctionality()
{
if(window.event)
{
if(window.event.clientX<40&&window.event.clientY<0)
{
警报(“单击浏览器后退按钮…”);
}否则{
警报(“单击浏览器刷新按钮…”);
}
}否则{
if(event.currentTarget.performance.navigation.type==1)
{
警报(“单击浏览器刷新按钮…”);
}
if(event.currentTarget.performance.navigation.type==2)
{
警报(“单击浏览器后退按钮…”);
}
}
}

好的。除了您不应该首先触发事件和
.unload=FunctionName
而不是
.unload=FunctionName()
以及您需要传递
事件
参数之外,我还在浏览器中检查了代码

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

请使用此选项自行调试代码,并使其适合您的需要: window.onunload=车把靠背功能

function HandleBackFunctionality(event)
{
  console.log(event, window.event);
}
您将看到未设置currentTarget(而事件已设置)。

使用

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

这是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>

window.addEventListener(“页面显示”,函数(事件){
var pagehistory=event.persistend |
(typeof window.performance!=“未定义”&&
window.performance.navigation.type==2);
如果(页面历史记录){
//后退按钮事件-做任何事情。
}
});

对不起,有一半的问题。。。。。下面是不更改浏览器历史记录的扩展(我的项目需要浏览器历史记录作为摘要)。您好,感谢您的回复。window.onunload=车把靠背功能;window.onunload();我在标题部分这样写。。。尽管我得到了和你说的一样的例外,但currentTarget是空的。。。。如何找到浏览器后退按钮。。。我已经尝试了很多方法没有用…嗨,谢谢你的快速回复。。。。在我添加JqueryMobile.js文件之后,您的代码运行良好。是否可以不添加JqueryMobile.js文件,只添加jquery.1.11.1.js文件…它需要在这里进行JqueryMobile检查。包括它时有什么问题吗?它还是小js,一点也不重。在我添加jquerymobile.js之后,一些类添加到了我的html页面。我的总视图被打乱了。这就是为什么我会问…@user3915009一些类被添加了,好吗?只要你不使用jquerymobile CSS,样式就不会添加到你的html中。检查添加了哪些类。哪些类提供了CSS。因此,在你的原生html中,使用其他类,如
sampleClass
to
sampleClass1
这样,并在CSS中使用这些类,如
sampleClass1{ADD\u HERE\u Styleing}