有没有一种方法可以为访问一个网站计时,而不考虑在页面之间移动
is there a way to time a visit to a site, disregarding moving through pages?
我正在寻找一种方法来计时访问者在网站上的停留时间,同时在更改页面时不重新启动或中断计时器。
将初始访问时间存储在会话值中。未来对网站的任何访问都会使用辅助会话变量来保存上次访问的时间,并据此计算出网站上的时间。
除非您使用Ajax更新会话值,否则用户可能会在您的网站上(在同一页面上)活动20分钟,但它将显示为零长度访问。
基本示例:
<?php
session_start();
if(isset($_SESSION['firstVisit']))
$_SESSION['latestVisit'] = date();
else
$_SESSION['firstVisit'] = date();
echo $_SESSION['firstVisit'] . " - " . $_SESSION['latestVisit'];
?>
您可以在用户请求第一个页面时启动会话。通过该会话,您可以逐页跟踪用户。因此,您可以计算他们访问的第一页和最后一页请求之间的总时间。
您还应该能够在页面卸载时发送Ajax请求,从而可以检测在单个页面上花费的时间。然而,如果他们在多个窗口/选项卡中浏览,除非你能够检测到页面焦点,否则你的阅读是错误的。
把两者结合起来,你应该能够得到一个相当完整的画面。
将数据存储在会话中,并在用户执行注销时保存数据
(如果用户没有注销,它将不会被保存,但这应该不是问题)
编辑:如果用户没有登录/注销,则必须捕捉会话何时终止并保存数据。在评估数据时,你必须补偿会话在结束前的生存时间,例如5分钟或其他时间,然后减去它。这会给你一个大致的数字,而不是用户查看网站的确切时间。
您可以跟踪用户登录的时间,但如果您想要(未登录的)用户停留的时间,我认为这是不可能的,因为有很多方法可以从一个页面移动到另一个
相关文章:
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- YouTube作为弹出窗口在桌面版本上播放,但不在移动设备上播放
- 在BoilerplateJS浏览器加载所有脚本(在其他模块中),而不考虑激活的模块
- JS toLocaleString始终显示货币符号,而不考虑区域设置
- 导航菜单不适合移动浏览器
- 在呈现网页时复制网页,而不考虑参考底图的来源
- 如何使用 javascript 获取 UTC 格式的日期,而不考虑当前系统日期
- 为什么我的导航按钮或按钮文本不会移动到中心
- 转换 JSON 日期,不考虑时区
- 使用XPath选择包含文本的节点,而不考虑CasperJS中的空白
- 使用简单的角度滤波器来替换输入字符串中某些字符串的所有出现,而不考虑大小写和空格
- 角度高图表和ng网格标题不考虑帧宽度
- 试图在CSS中以顶部标题居中链接,但不会移动
- jQuery/JavaScript代码如何将表导出为CSV文件而不考虑表's大小.看看@jsfiddle链接
- 捕获给定类型的所有事件,而不考虑气泡/目标
- 字段验证器,它不允许移动到下一个字段
- 选项卡分组和选项卡着色:如何将此功能应用于从我的网页打开的选项卡,而不考虑浏览器
- CSS不透明度转换;在动画过程中不考虑覆盖不透明度
- getAttribute('href') 始终返回“#”,而不考虑移动浏览器上的实际 href 属性
- 有没有一种方法可以为访问一个网站计时,而不考虑在页面之间移动