javascript 我怎么知道在Firefox中点击的是刷新按钮还是浏览器后退按钮?[duplicate]

fumotvh3  于 2023-03-16  发布在  Java
关注(0)|答案(4)|浏览(188)

此问题在此处已有答案

Detect back button click in browser [duplicate](6个答案)
八年前就关门了。
在Firefox中我如何知道刷新按钮被点击了还是浏览器后退按钮被点击了?对于这两个事件,onbeforeunload()方法是一个回调函数。对于Internet Explorer,我是这样处理的:

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 {
        // I 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.clientXevent.clientY总是0,有没有其他方法可以找到它?

bvjxkvbb

bvjxkvbb1#

用于刷新时事件:

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

参见 Window: beforeunload event
还有

$(window).unload(function() {
    alert('Handler for .unload() called.');
});
quhf5bfb

quhf5bfb2#

使用“event.currentTarget.performance.navigation.type”确定导航的类型。
这是工作在IE浏览器,火狐浏览器和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");
        }
    }
}
iecba09b

iecba09b3#

对于后退按钮:
在jQuery中:

// http://code.jquery.com/jquery-latest.js

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

在HTML5中有一个事件。

该事件称为“弹出状态”

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

如需刷新,请检查 Check if page gets reloaded or refreshed in JavaScript
在Mozilla中,* 客户端x * 和 * 客户端y * 位于文档区域内。请参见 MouseEvent.clientX

wd2eg0qa

wd2eg0qa4#

var keyCode = evt.keyCode;
if (keyCode == 8)
    alert('you pressed backspace');

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

相关问题