如何跟踪用户在请求其他网站或停留网站之前停留在网页上的时间?
基本上,我想做一个检查,如果用户在页面上停留20分钟或更长时间,然后做一些事情。
我相信这需要php和javascript,但我不确定如何实现它。
也许在php中使用这个$_SERVER
来获取执行时间,然后在用户点击其他地方时获取时间戳并简单地比较两者?
答案 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并收集统计信息,也可以使用为您完成所有操作的服务。
其用法示例:
包含在您的信息页中:
<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
事件。