如何判断用户页面停留时间?
有个需求是需要记录用户在某页面的浏览到关闭标签的停留时间,
用户是浏览本文 还是 挂起该页面,
请问有什么好的解决方案吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有个需求是需要记录用户在某页面的浏览到关闭标签的停留时间,
用户是浏览本文 还是 挂起该页面,
请问有什么好的解决方案吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
这是一个比较复杂的课题,有很多解决方案
也得看你需求是长期的时长记录,还是即使用户只访问你的页面一次也得记录停留时间。如果长期记录,可以将时长缓存到Cookie,下一次访问时再提交统计记录。
不管哪种思路,肯定要用到一个计时器,要么用setInterval累加秒数,要么在onload时记录时间戳,也可以调用window.performance.timing获取更完整的各种时间节点,计时不难,难点在于用户离开网页的一瞬间如何把这个记录传到后端。以前常用unload、beforeunload事件,但是chrome已经放弃了对其的支持,很多浏览器的表现也不同,而且有时候浏览器意外关闭时候无法触发事件。
有一个相对比较好的方案就是用ajax轮询或者websocket的心跳检测,定时向服务器传递心跳,由服务器记录停留时长,虽然消耗带宽但是效果肯定是最好的,在任何情况都能记录精准的时长。
另外对于非IE浏览器,现在的navigator.sendBeacon函数能比较好的代替以前在beforeunload事件中提交ajax的效果,详见MDN的解释:
感谢 @vitech 的回答,对我有帮助,这个看似简单的问题确实比较麻烦,没有一个专门的API能准确的计算出这个时间,只能结合前端各个事件综合判断得出一个适合自己需求的大概时间。
这个问题今日头条官方如何精确统计页面停留时长也有讨论分享,在此记录。