24

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

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

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

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

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

4

7 回答 7

16

我最喜欢的框架之一是Yahoo! 的 Browser History Manager。您注册事件并在用户返回到该状态时回调您。如果你想了解它是如何工作的,这里有一篇关于雅虎决策的有趣博客文章!设计时做出来的。

于 2008-09-11T06:10:16.100 回答
14

有多种方法可以做到这一点,尽管有些方法只适用于某些浏览器。我知道的一个想法是在页面上嵌入一个几乎不可见的微小 iframe。当用户点击后退按钮时,iframe 被导航回来,您可以检测到然后更新您的页面。 是另一个解决方案。

您可能还想查看 gmail 之类的源代码,看看他们是如何做到的。

顺便说一下,这里有一个图书馆,里面有你要找的东西

于 2008-09-11T06:01:42.720 回答
7

无法判断用户何时单击后退按钮或按退格键返回浏览器,但是可以检测到以特定顺序发生的其他事件。这个示例 javascript有一个相当好的方法来检测返回命令:

然而,传统的方法是使用 cookie 或引用页面跟踪用户在您的站点中的移动。当用户转到页面 A,然后是页面 B,然后再次出现在页面 A 上(特别是当 B 上没有指向 A 的链接时),那么您知道他们返回了 - A 可以检测到这一点并重定向它们或以其他方式。

于 2008-09-11T06:04:34.070 回答
3

雅虎用户界面库是我个人最喜欢的客户端 JS 库,它有一个出色的浏览器历史管理器,可以完全满足您的要求。

于 2008-09-11T06:14:00.053 回答
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>
于 2015-10-30T15:28:46.817 回答
2

我用 value 设置了$wasPosted一个$_SESSION变量false

我所有的帖子都通过同一个 php 文件,并设置$wasPostedtrue.

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

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

于 2015-12-16T10:09:57.380 回答
1

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

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

于 2008-09-15T20:16:33.443 回答