【发布时间】:2013-08-29 17:59:33
【问题描述】:
如何在 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。有没有其他方法可以找到它?
【问题讨论】:
-
您可以使用历史 API 并自己处理整个导航过程。见developer.mozilla.org/en-US/docs/Web/Guide/DOM/…
-
注意刷新也可以用F5、CTRL+R,导航也可以用键盘,不同浏览器和操作系统不同。
-
顺便说一句,你想跨浏览器还是只在 Firefox 中?你的标题是 firefox,但标签是跨浏览器。
-
只检查缓存中是否有值。如果有一个后退按钮,那么一些保存的值仍然存在,如果单击刷新按钮,那么一切都将是默认值。这在 PHP 中很容易完成,但如果您只检查设置变量,也可以在 Javascript 中完成。
-
经验法则:每当您觉得“需要”区分刷新或后退/前进导航时,您很可能已经做错了什么。所以我建议你描述一下你想通过这个解决的实际问题,而不是继续骑这匹已经死(或者更确切地说已经死胎)的马。
标签: javascript browser cross-browser dom-events