跟踪用户在浏览器上点击后退按钮的操作

26

如何检测用户点击浏览器返回按钮?

我有一个Ajax应用程序,如果我能够检测到用户点击返回按钮的操作,我可以显示相应的数据。

最好使用PHP、JavaScript等语言进行解决。任何语言的解决方案都可以,只要我能够将其翻译成PHP/JavaScript即可。

编辑:请参考以下内容:

哇,所有的答案都很好。我想使用Yahoo,但我已经在使用Prototype和Scriptaculous库,不希望再添加更多的Ajax库。但它使用了,这给了我一个很好的指针来编写自己的代码。

7个回答

17

15

有多种方法可以实现这一点,尽管其中一些只适用于特定的浏览器。我脑海中知道的一种方法是在页面上嵌入一个微小的几乎不可见的 iframe。当用户按下返回按钮时,iframe 被导航回来,您可以检测到并更新您的页面。 这里 是另一种解决方案。

您还可以查看类似 Gmail 的网页源代码,看看他们如何实现。

这里 顺便提供了一个库,可以满足您需要的功能。


8
无法确定用户何时点击后退按钮或按下退格键返回到浏览器中,但是有其他一些事件按照特定顺序发生,这些事件是可以检测到的。这个JavaScript示例有一个相当好的方法来检测后退命令:
然而,传统的方法是使用Cookie或引荐页面跟踪用户在您的站点上的移动。当用户访问页面A,然后访问页面B,然后再次出现在页面A(特别是在B没有指向A的链接时),则您知道他们已经返回- A可以检测到并将其重定向或以其他方式处理。

3

检查是否返回了需要刷新的缓存页面最简单的方法是添加一个将被缓存的隐藏输入元素,并检查它是否仍然具有默认值。

只需在您的body标签中放置以下内容。我把我的放在结束标签之前。

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

当您点击刷新按钮时,此脚本会导致无限循环!在火狐浏览器上进行了测试。 - instead

3
雅虎用户界面库是我个人最喜欢的客户端JS库,它有一个出色的浏览器历史管理器,可以完美地实现您所要求的功能。请查看Browser History Manager

2
我在$_SESSION中设置了一个名为$wasPosted的变量,并将其值设为false
我的所有文章都通过同一个php文件发布,会将$wasPosted设置为true
在所有header(location:)请求之前,都会先将$wasPosted设置为true
如果$wasPostedfalse,那么页面是通过使用“后退”或“前进”按钮加载的。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接