是否可以检测用户何时点击浏览器的后退按钮?
我有一个Ajax应用程序,如果我能检测到用户点击后退按钮的时间,我可以显示相应的数据
使用PHP,JavaScript的任何解决方案都是首选。用任何语言解决问题都很好,只需要一些我可以翻译成PHP / JavaScript的东西
答案 0 :(得分:16)
我最喜欢的框架之一是Yahoo!'s Browser History Manager。您注册事件,当用户返回到该状态时,它会回拨您。如果你想在设计时了解它是如何工作的,here's a fun blog entry about the decisions Yahoo! made。
答案 1 :(得分:14)
有多种方法可以执行此操作,但有些方法仅适用于某些浏览器。我所知道的一个就是在页面上嵌入一个微小的近乎隐形的iframe。当用户点击后退按钮时,iframe会被导航回来,您可以检测到然后更新您的页面。 Here是另一种解决方案。
您可能还想查看gmail等内容的查看源,看看他们是如何做到的。
Here's一个图书馆用于你正在寻找的那种东西
答案 2 :(得分:7)
没有办法告诉用户何时点击后退键按下退格键返回浏览器,但是有一些其他事件按特定顺序发生,可以检测到。这个example javascript有一个相当不错的方法来检测后退命令:
然而,传统方式是使用Cookie或引荐来源网页跟踪用户在您网站上的移动情况。当用户转到页面A,然后转到页面B,然后再次出现在页面A(特别是当B到A没有链接时),然后你知道他们回去了 - A可以检测到这一点并重定向它们或其他。
答案 3 :(得分:3)
雅虎用户界面库,我个人最喜欢的客户端JS库,有一个非常出色的Browser History Manager,可以满足您的要求。
答案 4 :(得分:3)
检查是否回到页面的缓存版本(需要刷新)的最简单方法是添加一个将被缓存的隐藏输入元素,并且可以检查它是否仍然具有其默认值。
只需将以下内容放入身体标记内即可。我把它放在结束标记之前。
<input type="hidden" id="needs-refresh" value="no">
<script>
onload=function(){
var e = document.getElementById("needs-refresh");
if (e.value === "yes")
location.reload();
e.value = "yes";
}
</script>
答案 5 :(得分:2)
我在$wasPosted
中设置了一个变量$_SESSION
,其值为false
。
我的所有帖子都是通过相同的php文件进行的,并将$wasPosted
设置为true
。
所有header(location:)
次请求之前都会将$wasPosted
设置为true
。
如果$wasPosted
为false
,则在使用向后或向前按钮后页面已加载。
答案 6 :(得分:1)
dojo工具包具有在javascript中处理此功能的功能。我认为在纯PHP中没有任何好方法可以处理它。
以下是他们拥有的文档页面:http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/back-button-undo