跟踪用户在网页上停留多长时间?

时间:2013-03-21 21:26:47

标签: php javascript jquery

如何跟踪用户在请求其他网站或停留网站之前停留在网页上的时间?

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

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

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

2 个答案:

答案 0 :(得分:6)

您可以使用简单的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/

答案 1 :(得分:0)

我已将一些工作放入一个小型JavaScript库和服务中,该库和服务会计算用户在网页上的时长。它具有更准确(但并不完美)跟踪用户实际与页面交互的时间的额外好处。它忽略了用户切换到不同选项卡,闲置,最小化浏览器等的时间.Google Analytics方法的缺点(据我所知)它只会检查您的域处理新请求的时间,而不是永远准确。它不考虑是否有人不再查看您的页面,最小化浏览器,将标签切换到自上次加载页面以来的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事件。