如何判断每个用户访问每个页面的时间
How to tell how long each user visits each page?
是否有一种好方法可以准确地告诉用户在web应用程序的给定页面上花费了多长时间?
我想到的一个解决方案是使用Javascript每分钟访问一个web服务,并在数据库中跟踪这些访问。但我想知道是否有更好的方法…是否有一种方法可以通过谷歌分析来实现这一点?如果有,怎么做?
首先,我同意关于分析软件的评论,你一定要研究一下这种性质的东西。
我不知道这会有多好,而且我绝对不相信这是最好的方法,但是如果你坚决要在客户端做这件事,你也许可以尝试这样做:
var start = new Date().getTime();
window.onbeforeunload = function(){
var end = new Date().getTime();
alert( parseInt(end - start, 10)/60000 + " minutes" );
};
这里的想法是节省当前时间一旦用户访问您的页面。一旦他们离开,onbeforeunload事件应该被触发并运行函数来计算他们在页面上花费的时间。我想您可以在中添加一个ajax调用(或其他东西)一个同步调用以节省总时间。
注意: jsfiddle将阻止这些事件,但是您仍然可以通过打开控制台在错误日志中看到输出。打开控制台后,点击Run
触发事件。
编辑:
请参阅下面@Ian关于在onbeforeunload
事件中使用AJAX请求的评论。
对于那些感兴趣的人,我已经在一个小型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
事件。
- 是否可以在javascript中访问
src的文件创建时间
- 如何从浏览器访问硬件时间
- 授予用户帐户访问权限一段时间
- AJAX 可访问的长时间运行的服务任务阻止在启用 ASP.NET 兼容性/会话的环境中的后续 AJAX 服务请求
- 如何在 JavaScript 中循环访问时间值
- Javascript - 记录用户在整个访问过程中按下给定按钮的时间
- C3.js 中的时间序列图无法访问时间戳
- 如何跟踪1页网站的访问持续时间
- AJAX的简单访问持续时间记录器
- 访问节点中长时间运行的进程的grpc流变量
- 在用户提交结果时,将日期和时间保存到访问文件中
- js显示的元素是'一段时间内无法访问
- 需要访问嵌入youtube视频当前时间
- 只允许在特定时间访问网站
- 通过内部时间轴- Adobe动画- HTML 5访问主时间轴
- 如何判断每个用户访问每个页面的时间
- PhoneGap localStorage访问数据的时间太长
- 在一段时间后访问页面时自动刷新页面
- 我如何存储访客信息,如到达时间,访问的持续时间,并在php访问者的确切位置
- 在SVG访问JavaScript变量?SVG中的当前时间