跟踪用户何时点击浏览器上的后退按钮

IT技术 php javascript browser
2021-03-11 17:33:34

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

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

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

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

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

6个回答

我最喜欢的框架之一是Yahoo! 的 Browser History Manager您注册事件,当用户返回到该状态时,它会给您回电。如果您想了解它是如何工作的,这里有一个关于 Yahoo! 决策的有趣博客条目。设计的时候了。

有多种方法可以做到这一点,尽管有些方法只能在某些浏览器中使用。我最清楚的是在页面上嵌入一个几乎不可见的微小 iframe。当用户点击后退按钮时,iframe 会向后导航,您可以检测并更新您的页面。 是另一种解决方案。

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

下面是为这类事情你的方式寻找库

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

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

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

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

只需将以下内容放入您的 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>
当您点击刷新按钮时,此脚本会导致无限循环!在火狐上测试。
2021-04-20 17:33:34