0

我试图想出一种方法来衡量用户在我的 ASP.NET 应用程序中的页面上停留了多长时间。我将用户 ID、页面名称、pageenteredtime 和 pagelefttime 存储在数据库中。每条记录也有自己唯一的 id,称为 featureuselogid。

目前,我可以通过服务器端的 page_load 函数跟踪用户何时进入页面。我存储用户 ID、页面名称和页面输入时间。

在那之后我卡住了,需要一些正确方向的指导。我需要记录用户离开页面的时间。我知道在 javascript 中有一个 window.onbeforeunload 函数,它将涵盖大多数情况(浏览器关闭、链接等)。

但是如何将 featureuselogid 传递给 javascript?如果我能做到这一点,我想我可以从 javascript 进行网络服务调用,并使用 pagelefttime 更新记录。

我走错路了吗?

提前喝彩。

4

3 回答 3

2

您必须在定期调用服务器的客户端上运行 Javascript 计时器。一旦呼叫没有在预期的时间被记录下来,就意味着用户已经离开。Woopra 做到了这一点,并且它工作可靠。例如,有时人们在后台在浏览器中加载了几天的页面,并且没有其他方法可以检测到他们仍然处于连接状态。

笔记本电脑上的用户拉网线、移出 Wifi 区域的覆盖范围等等等,有太多场景导致 onbeforeunload 事件不再到达服务器。

于 2009-10-06T03:23:31.620 回答
1

只需将其featureuselogid放在页面的隐藏字段中,并使用一个唯一的 ID 使其可供 Javascript 访问,或者设置一个 javascript 变量。

话虽如此,我相信您将能够最可靠地检测到Page_Load. Page_Load您可以通过测量事件之间的时间来确定页面之间的时间。您不会关闭浏览器,但 IMO 知道用户何时关闭浏览器并不是那么有意义。

于 2009-10-06T03:11:14.793 回答
0

当您在 ASP.net 中呈现页面时,请包含一个 javascript 标记,该标记将变量分配给服务器端脚本的值:

<script language="javascript">
    var JS_featureuselogid = <%= featureuselogid %>;
</script>

稍后在您的 javascript 代码中,您可以引用 JS_featureuselogid 变量并获取在页面构建期间注入其中的值。

于 2009-10-06T03:10:33.877 回答