题
是否可以检测用户何时单击浏览器的后退按钮?
我有一个 Ajax 应用程序,如果我可以检测到用户何时单击后退按钮,我可以显示适当的数据
任何使用 PHP、JavaScript 的解决方案都是优选的。任何语言的解决方案都可以,只需要我可以翻译成 PHP/JavaScript 的东西
编辑:从下面剪切并粘贴:
哇,所有答案都很棒。我想使用 Yahoo,但我已经使用 Prototype 和 Scriptaculous 库,并且不想添加更多 ajax 库。但它使用 iFrames 这为我编写自己的代码提供了很好的指导。
其他提示
我最喜欢的框架之一是 雅虎的浏览器历史记录管理器. 。您注册事件,当用户返回到该状态时,它会回调您。如果你想了解它是如何工作的 这是一篇关于雅虎决定的有趣博客文章!制成 设计它的时候。
无法判断用户何时单击后退按钮或按退格键返回浏览器,但是可以检测到按特定顺序发生的其他事件。这 示例 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>
我设置了一个变量 $wasPosted
在 $_SESSION
有价值 false
.
我所有的帖子都通过同一个 php 文件,并设置 $wasPosted
到 true
.
全部 header(location:)
请求之前设置 $wasPosted
到 true
.
如果 $wasPosted
是 false
然后在使用后退或前进按钮后加载页面。
dojo 工具包具有在 javascript 中处理此问题的功能。我不认为有什么好的方法可以用纯 PHP 来处理它。
这是他们的文档页面: http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/back-button-undo