如何使用Javascript确定网站停留时间?

8
Google Analytics可以追踪“网站停留时间”。如何有效地实现这一点?它是否真的能够追踪用户关闭浏览器或导航离开的时间?您有什么想法?
5个回答

4
我不能百分之百确定,但我猜他们使用JavaScript和onload、onunload事件和/或setTimer通过AJAX与Web服务通信。这样他们就可以弄清楚用户何时进入或离开您网站的页面。一旦浏览器停止“ping” Web服务,就假定他们离开了您的网站。我相信无论如何都存在一定的误差,但你可以通过这种方式获得相当不错的估计。

1
但你从使用GA的任何网站中都看不到任何请求“pinging”出去。而且不能使用onbeforeunload,因为在页面关闭之前,你永远不能确保请求会及时完成。 - vsync
@vsync - 可能是GA根据您加载下一页的时间来确定您何时离开页面。 假设所有页面都有GA,这将起作用。 当然,除非您离开该网站。 - Eric Petroelje
有时候你的网站可能会在多个标签页中打开,而从其中一个标签页跳转到另一个网站,或者其他情况也可能发生。因此,这种方法可能行不通,除非GA一直向你发送ping以确保用户在网站中,无论在哪个标签页中..但这样做会非常丑陋,网站管理员会想要这样吗? - vsync

3
只需设置如下函数:

function functionName() {

function track()
{
   setTimeout(track ,1000);
   now = new Date;
   now_string = now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds();
   (... whatever you want to do with this data)
}

在JavaScript中,你会得到一个字符串,表示HH:MM:SS,或者在小时/分钟/秒数小于2个字符的情况下是H:M:S。
所以只需进行一些数学计算即可。将其运行在窗口中,并与会话相关联(确保在所有页面中都存在),就可以准确地知道某个用户在您的页面上停留了多长时间。
编辑:我不得不删除那里的一个函数,它是我的,而不是JavaScript的,抱歉:p

3
有一个名为onBeforeUnload的JavaScript事件,当用户离开页面时执行。这可能包括关闭窗口/选项卡或导航到不同的页面(即使在同一站点上)。通过在页面加载后立即获取时间,并使用JavaScript发送同步请求onBeforeUnload,并计算加载和离开之间的时间差,您可以有效地跟踪在页面上花费的时间。我认为这就是Google所做的。如果您想要工作代码示例和更多信息,请查看这里

2
我认为它无法追踪您关闭浏览器或导航离开的时间,即使它可以,也不会在所有情况下都有效。
我猜他们会根据前面的页面或该页面所有访问者的平均值来估算停留时间。如果您在几分钟内浏览了三个页面,则可以精确计算前两个页面的浏览时间,但永远不知道第三个页面的浏览时间。也许您立即关闭页面,或者保持打开状态稍后再读。
这是统计数据,因此从长远来看通常相当准确,但它从未真正反映事实。;)

1

我猜他们可能会运行一个计时器,在每个循环中使用 cookie 来识别用户和会话,并执行某种回调操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接