我试图想出一种方法来衡量用户在我的ASP.NET应用程序中访问页面的时间。我将userid,pagename,pageenteredtime和pagelefttime存储在数据库中。每条记录都有自己独特的ID,称为featureuselogid。
目前,我可以跟踪用户何时使用服务器端的page_load功能进入页面。我存储了userid,pagename和pageenteredtime。
之后我陷入了困境,需要一些正确方向的指导。我需要记录用户离开页面的时间。我知道在javascript中有一个window.onbeforeunload函数,它将涵盖大多数情况(浏览器关闭,链接等)。
但是如何将featureuselogid传递给javascript?如果我能做到这一点,我想我可以通过javascript进行web服务调用并使用pagelefttime更新记录。
我走错了路吗?
提前干杯。
答案 0 :(得分:2)
您必须在定期调用服务器的客户端上运行Javascript计时器。一旦呼叫未在预期时间记录,则表示用户已离开。 Woopra这样做,它可靠地工作。例如,有时人们在后台浏览器中加载页面数日,并且没有其他方法可以检测到它们仍然连接在一起。
笔记本电脑上的用户拉网线,移出Wifi区域等等,有太多场景,onbeforeunload事件将不再到达服务器。
答案 1 :(得分:1)
只需将featureuselogid
放在页面中的隐藏字段中,使用唯一ID即可访问Javascript,或设置javascript变量。
话虽如此,我相信你将能够最可靠地发现Page_Load
。您可以通过衡量Page_Load
事件之间的时间来确定页面之间的时间。你不会得到浏览器关闭,但是IMO知道用户何时关闭浏览器并不是那么有意义。
答案 2 :(得分:0)
在ASP.net中渲染页面时,请包含一个javascript标记,用于将变量分配给服务器端脚本的值:
<script language="javascript">
var JS_featureuselogid = <%= featureuselogid %>;
</script>
稍后在您的javascript代码中,您可以引用JS_featureuselogid变量并获取在页面构建期间注入其中的值。