跟踪用户在浏览器上点击按钮的时间

时间:2008-09-11 05:52:57

标签: php javascript browser

是否可以检测用户何时点击浏览器的后退按钮?

我有一个Ajax应用程序,如果我能检测到用户点击后退按钮的时间,我可以显示相应的数据

使用PHP,JavaScript的任何解决方案都是首选。用任何语言解决问题都很好,只需要一些我可以翻译成PHP / JavaScript的东西

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

哇,所有优秀的答案。我想使用Yahoo,但我已经使用了Prototype和Scriptaculous库,并且不想添加更多的ajax库。但它使用了 iFrames ,它为我提供了一个编写自己代码的好指针。

7 个答案:

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

如果$wasPostedfalse,则在使用向后或向前按钮后页面已加载。

答案 6 :(得分:1)

dojo工具包具有在javascript中处理此功能的功能。我认为在纯PHP中没有任何好方法可以处理它。

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