跟踪用户点击浏览器上的button

是否有可能检测到用户点击浏览器的后退button?

我有一个Ajax应用程序,如果我可以检测到用户点击后退button,我可以显示适当的数据

任何使用PHP,JavaScript的解决scheme都是可取的。 地狱在任何语言的解决scheme是好的,只需要我可以翻译成PHP / JavaScript的东西

编辑:从下面剪切和粘贴:

哇,所有优秀的答案。 我想使用雅虎,但我已经使用Prototype和Scriptaculous库,并不想添加更多的Ajax库。 但它使用的iFrames给了我一个很好的指针来写我自己的代码。

有多种方法可以做到,但有些只能在某些浏览器中使用。 我知道的一点就是在页面上embedded一个非常小的隐形iframe。 当用户点击返回button时,iframe被导航回来,您可以检测到,然后更新您的页面。 这是另一个解决scheme。

你也可能想看看像gmail的东西,看看他们是如何做到这一点。

这里有一个你正在寻找的东西

我最喜欢的框架之一是雅虎的浏览器历史loggingpipe理器 。 您注册了事件,并在用户返回到该状态时将其回叫。 如果你想了解它是如何工作的, 这里有一个有趣的博客条目雅虎的决定! 在devise时做出 。

当用户点击后退button返回浏览器时,没有办法知道用户点击后退button,但是还有其他事件按照某种顺序发生,这些事件是可检测的。 这个例子的javascript有一个相当不错的方法来检测后面的命令:

然而,传统的方式是使用cookie或引用网页来跟踪用户在您的网站上的移动。 当用户转到页面A,然后转到页面B,然后再次出现在页面A(特别是当B与A之间没有链接时),那么你知道他们回去了–A可以检测到这个,并redirect他们或以其他方式。

雅虎用户界面库,我个人最喜欢的客户端JS库,有一个出色的浏览器历史loggingpipe理器 ,正是你所要求的。

dojo工具包具有在javascript中处理这个function。 我不认为有什么好方法在纯PHP中处理它。

这里是他们的文档页面: http : //dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/back-button-undo

我在$_SESSION设置了一个variables$wasPosted ,其值为false

我所有的post都通过相同的PHP文件,并设置$wasPostedtrue

所有header(location:)请求之前都设置$wasPostedtrue

如果$wasPostedfalse则在使用向后或向前button之后加载页面。

最简单的方法来检查你是否回到你的页面的caching版本,需要刷新,是添加一个隐藏的input元素,将被caching,你可以检查它是否仍然有它的默认值。

只需将以下内容放在您的身体标记中。 我把它放在结束标记之前。

 <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>