繁体   English   中英

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

[英]Track when user hits back button on the browser

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

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

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

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

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

我最喜欢的框架之一是Yahoo!的浏览器历史记录管理器 您注册事件,当用户返回到该状态时,它会回拨您。 如果你想了解它是如何工作的, 这里有一篇关于Yahoo!决定的有趣博客文章。 设计的时候了。

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

您可能还想查看gmail等内容的查看源,并了解它们是如何做到的。

这是一个你正在寻找的东西的图书馆

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

但是,传统方法是使用Cookie或引荐来源网页跟踪用户在您网站上的移动情况。 当用户转到页面A,然后转到页面B,然后再次出现在页面A(特别是当B到A上没有链接时),然后你知道他们回去了 - A可以检测到这一点并重定向它们。

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

只需将以下内容放在身体标签内即可。 我把它放在结束标记之前。

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

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

我在$_SESSION设置了一个变量$wasPosted ,其值为false

我的所有帖子都通过相同的php文件,并将$wasPosted设置为true

所有header(location:)请求之前都将$wasPosted设置为true

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM