如何知道Firefox中是否单击了刷新按钮或浏览器后退按钮[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何知道Firefox中是否单击了刷新按钮或浏览器后退按钮[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

如何在Firefox中了解是单击了刷新按钮还是单击了浏览器后退按钮...对于这两个事件,onbeforeunload()方法是一个回调。对于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();"> 

但在Firefox中,event.clientX和event.clientY始终为0.还有其他方法可以找到它吗?

答案

用于刷新事件

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

https://developer.mozilla.org/en-US/docs/Web/API/window.onbeforeunload?redirectlocale=en-US&redirectslug=DOM%2Fwindow.onbeforeunload

$(window).unload(function() {
      alert('Handler for .unload() called.');
});
另一答案

使用'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");
        }           
    }
}
另一答案

对于jquery // http://code.jquery.com/jquery-latest.js中的后退按钮

 jQuery(window).bind("unload", function() { //

html5中有一个事件该事件被称为'popstate'

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

并刷新请检查Check if page gets reloaded or refreshed in Javascript

在Mozilla Client-x和client-y是文档区域https://developer.mozilla.org/en-US/docs/Web/API/event.clientX

另一答案
var keyCode = evt.keyCode;
if (keyCode==8)
alert('you pressed backspace');

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

以上是关于如何知道Firefox中是否单击了刷新按钮或浏览器后退按钮[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何让鼠标按钮 4 / 5(浏览器后退/浏览器前进)在 Firefox 中工作?

检测 F5 被按下并刷新

如何查看Firefox中保存的登录密码

F5,Ctrl + F5和单击刷新按钮之间的区别?

是否可以在单击单选按钮时刷新 div?

PrimeFaces布局需要在FireFox和IE上手动刷新