如何判断每个用户访问每个页面的时间长度?

时间:2013-04-16 19:47:09

标签: javascript web-applications web google-analytics google-analytics-api

是否有一种很好的方法可以判断给定用户在Web应用程序的给定页面上花费多长时间,准确度大约为一分钟?

我遇到的一个解决方案是使用Javascript每分钟点击一次Web服务,并跟踪数据库中的点击量。但我想知道是否有更好的方法......有没有办法通过Google Analytics实现这一目标?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:3)

首先,我同意有关分析软件的评论,你肯定应该研究这种性质的东西。

我不知道这会有多好用,我绝对不相信这是最好的方法,但如果你已经死定了这个客户端,你可能会尝试类似的事情:

var start = new Date().getTime();

window.onbeforeunload = function(){
    var end = new Date().getTime();
    alert( parseInt(end - start, 10)/60000 + " minutes" );
};

这里的想法是在用户访问您的网页时保存当前时间。一旦他们离开,onbeforeunload事件应该触发并运行该函数来计算他们在页面上花费的时间。我想你可以添加一个ajax调用(或其他东西)一个同步调用来保存某个地方的总时间。

EXAMPLE

注意:jsfiddle将阻止这些事件,但您仍然可以通过打开控制台查看错误日志中的输出。只需点击Run即可在控制台打开后触发事件。

修改

请参阅下面关于在onbeforeunload事件中使用AJAX请求的@ Ian的评论。

答案 1 :(得分:1)

对于那些感兴趣的人,我已经将一些工作放入一个小的JavaScript库和服务中,这个库和服务会计算用户与网页交互的时间。它实际上正是Chase在他/她的回答中所描述的!但是,它具有更准确(但不完美)跟踪用户实际与页面交互的时间的额外好处。它会忽略用户切换到不同选项卡,空闲,最小化浏览器等的时间。

编辑:我已更新示例以包含当前的API使用情况。

http://timemejs.com

其用法示例:

包含在您的信息页中:

<script src="http://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>

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

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

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