5

如何跟踪用户在请求另一个页面或离开站点之前在页面上停留的时间?

基本上,我想做一个检查,如果用户在页面上停留 20 分钟或更长时间,然后做一些事情。

我相信这需要 php 和 javascript,但我不确定如何完成它。

也许$_SERVER在php中使用它来获取执行时间,然后在用户单击其他地方时获取时间戳并简单地比较两者?

4

2 回答 2

7

您可以使用简单的 javascript 完成所有这些操作。
对于单页:

window.setTimeout(function(){
// Do stuff after 20 minutes of loading the page
// Then using jQuery you can call a PHP script to do stuff like so:
$.ajax({
     url: '/myScript.php',
     method: 'POST',
     success: function(result){
        //The request was successful and the output is stored in a variable: result
     },
     complete: function(){
        //Do stuff when the request is completed (Ignores if success or not)
     },
     beforeSend: function(){
        //Do something before the request is sent
     }
});
}, 20 * 60 * 1000); //This is in milliseconds that's why I use the equation 


对于多个页面:
我建议您在用户点击页面的时间设置一个 cookie,并在每个页面上检查 cookie 是否存在。如果存在,则每 x 秒运行一次查询,以查看自创建 cookie 以来是否已过去 20 分钟。


如需完整的 Ajax 文档,请访问:http ://api.jquery.com/jQuery.ajax/

于 2013-03-21T21:29:59.313 回答
0

我已经在一个小型 JavaScript 库和服务中投入了一些工作,以计算用户在网页上停留的时间。它还有一个额外的好处,那就是更准确(虽然不是很完美)跟踪用户实际与页面交互的时间。它忽略了用户切换到不同选项卡、空闲、最小化浏览器等的时间。谷歌分析方法有一个缺点(据我所知)它只检查你的域处理新请求时,这不是总是准确的。它不考虑是否有人不再查看您的页面,是否已最小化浏览器,自上次加载您的页面后是否已将选项卡切换到 3 个不同的网页等。

供参考 - 没有完美的解决方案。但希望这个也能提供价值。您可以实现 Javaacript API 并自己收集统计信息,或者您可以使用为您完成这一切的服务。

http://timemejs.com

其用法示例:

在您的页面中包含:

<script src="https://timemejs.com/timeme.min.js"></script>
<script type="text/javascript">
TimeMe.initialize({
    currentPageName: "home-page", // page name
    idleTimeoutInSeconds: 15 // time before user considered idle
});
</script>

如果您想自己向后端报告时间:

xmlhttp=new XMLHttpRequest();
xmlhttp.open("POST","ENTER_URL_HERE",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var timeSpentOnPage = TimeMe.getTimeOnCurrentPageInSeconds();
xmlhttp.send(timeSpentOnPage);

TimeMe.js 还支持通过 websockets 发送计时数据,因此您不必尝试将完整的 http 请求强制到document.onbeforeunload事件中。

于 2017-01-30T22:51:37.973 回答