Javascript 如何知道在Firefox中是否单击了刷新按钮或浏览器后退按钮

Javascript 如何知道在Firefox中是否单击了刷新按钮或浏览器后退按钮,javascript,browser,cross-browser,dom-events,Javascript,Browser,Cross Browser,Dom Events,如何在Firefox中知道是单击了刷新按钮还是单击了浏览器后退按钮。。。对于这两个事件,方法是回调。对于IE,我是这样处理的: function CallbackFunction(event) { if (window.event) { if (window.event.clientX < 40 && window.event.clientY < 0) { alert("back button is clicked");

如何在Firefox中知道是单击了刷新按钮还是单击了浏览器后退按钮。。。对于这两个事件,方法是回调。对于IE,我是这样处理的:

function CallbackFunction(event) {
    if (window.event) {
        if (window.event.clientX < 40 && window.event.clientY < 0) {
            alert("back button is clicked");
        }else{
            alert("refresh button is clicked");
        }
    }else{
        // want some condition here so that I can differentiate between
        // whether refresh button is clicked or back button is clicked.
    }
}

<body onbeforeunload="CallbackFunction();"> 
函数调用函数(事件){
if(window.event){
if(window.event.clientX<40&&window.event.clientY<0){
警报(“单击后退按钮”);
}否则{
警报(“单击刷新按钮”);
}
}否则{
//这里需要一些条件,以便我可以区分
//是单击刷新按钮还是单击后退按钮。
}
}
但是在Firefox中,event.clientX和event.clientY总是0。还有其他方法可以找到它吗?

返回按钮 在jquery中 //

在html5中有一个事件 该事件称为“popstate”

window.onpopstate = function(event) {
alert("location: " + document.location + ", state: " + JSON.stringify(event.state));
};
刷新请检查

在Mozilla中,Client-x和Client-y位于文档区域内

用于刷新事件

window.onbeforeunload = function(e) {
  return 'Dialog text here.';
};


使用“event.currentTarget.performance.navigation.type”确定导航的类型。 这是在IE、FF和Chrome中工作

function CallbackFunction(event) {
    if(window.event) {
        if (window.event.clientX < 40 && window.event.clientY < 0) {
            alert("back button is clicked");
        }else{
            alert("refresh button is clicked");
        }
    }else{
        if (event.currentTarget.performance.navigation.type == 2) {
            alert("back button is clicked");
        }
        if (event.currentTarget.performance.navigation.type == 1) {
            alert("refresh button is clicked");
        }           
    }
}
函数调用函数(事件){
if(window.event){
if(window.event.clientX<40&&window.event.clientY<0){
警报(“单击后退按钮”);
}否则{
警报(“单击刷新按钮”);
}
}否则{

if(event.currentTarget.performance.navigation.type==2){ 警报(“单击后退按钮”); }
if(event.currentTarget.performance.navigation.type==1){ 警报(“单击刷新按钮”); } } }

您可以使用history API,自己处理整个导航过程。请参阅注意,刷新也可以使用F5、CTRL+R完成,导航也可以使用键盘完成,并且在不同的浏览器和操作系统中有所不同。顺便问一下,您想跨浏览器还是只在firefox中执行此操作?你的标题是firefox,但标签是cross-browser。只需检查缓存中是否有值。如果有“后退”按钮,则某些保存的值仍将存在,如果单击了“刷新”按钮,则所有内容都将是默认值。这在PHP中很容易做到,但如果您只检查设置的变量,也可能在Javascript中实现。经验法则:每当您觉得“需要”区分刷新或后退/前进导航时,您很可能已经做错了什么。所以我建议你描述一下你想通过这个来解决的实际问题,而不是继续骑着这匹已经死了(或者说已经死了)的马。因此,它只适用于兼容html5的浏览器。如果一些用户使用鼠标而不是按键,该怎么办?我没有给出完整的解决方案,我只是提出了一个想法来帮助,最终程序员应该找到解决办法,并且通过鼠标导航,Mozilla开发者网站上有完整的教程,例如window.back,它是一个javascript函数,用于指向上一页的浏览器。不同的浏览器/操作系统有不同的刷新浏览器的方式。这到底是为什么被否决的!!!???这是一个不错的解决方案,因为它可以让您在大多数情况下达到目标,即使某些平台的键码不同。这实际上比
beforeunload
更接近于解决方案,因为
beforeunload
将在页面卸载的任何时候触发,而不一定是在刷新时触发——可能是永远。这至少只针对刷新。但是我很想否决使用
==
而不是
==
-Pevent.currentTarget.performance.navigation.type不适用于我,甚至event.currentTarget.performance也显示未定义。你会在这方面提供更多的帮助吗,更多的代码或脚本。你能提供你正在使用的FF版本吗?不支持Chrome、Safari和Opera。如何使用此功能?它说明页面是如何导航到的,而不是现在发生的事情。这是如何区分“重新加载”和“后退”按钮的。还请注意,iOS故意不支持在卸载事件之前执行
。请参阅Instead不回答问题:-\n它可以工作,但我们可以更改文本
$(window).unload(function() {
      alert('Handler for .unload() called.');
});
function CallbackFunction(event) {
    if(window.event) {
        if (window.event.clientX < 40 && window.event.clientY < 0) {
            alert("back button is clicked");
        }else{
            alert("refresh button is clicked");
        }
    }else{
        if (event.currentTarget.performance.navigation.type == 2) {
            alert("back button is clicked");
        }
        if (event.currentTarget.performance.navigation.type == 1) {
            alert("refresh button is clicked");
        }           
    }
}
var keyCode = evt.keyCode;
if (keyCode==8)
alert('you pressed backspace');

if(keyCode==116)
alert('you pressed f5 to reload page')