Javascript 如何知道在Firefox中是否单击了刷新按钮或浏览器后退按钮
如何在Firefox中知道是单击了刷新按钮还是单击了浏览器后退按钮。。。对于这两个事件,方法是回调。对于IE,我是这样处理的: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");
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')