我如何通过Jquery获得按钮点击时间?

时间:2011-09-24 13:41:50

标签: jquery timing

我想在注册页面上显示我的客户的平均注册时间(以秒为单位)。平均时间将基于使用cookie的最近15次注册。

以下是我想在注册页面上使用的示例文本:

  

注册大约需要 3.1秒。这是平均值   最近15次注册。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

你确定吗? Cookie会被放置在客户计算机上,您将无法通过15次注册向用户提供此类统计信息。

您需要通过GET请求从加载注册页面检查一个会话范围内的时间,直到使用POST请求发布注册数据。而且需要在服务器端完成。

这样的事情:

public partial class _Default : System.Web.UI.Page
{
    private static DateTime registrationStart;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            registrationStart = DateTime.Now;
        }
    }

    protected void Register_Click(object sender, EventArgs e)
    {
        TimeSpan registrationTimeSpan = DateTime.Now - registrationStart;

        this.StoreRegistrationTime(registrationTimeSpan); // store registration date to DB
    }
}

答案 1 :(得分:0)

跟踪客户端的时间比跟踪服务器端的时间更准确,因为跟踪服务器端的时间并不考虑带宽延迟或加载时间。如果用户连接速度较慢,移动连接或从其他国家/地区访问该网站,如果严格跟踪服务器端,则可能会严重影响计时结果。

在按钮的点击事件中,只需将点击时间设置为。 。

$('button.register').click(function(evt) {
    window.myApp.startTime = new Date().getTime(); //Milliseconds since midnight Jan 1, 1970
});

如果您要提交您的用户输入以通过ajax注册成功通话,您可以设置另一个时间(window.myApp.endTime),就像点击事件一样,然后找到2倍的差异,以毫秒为单位来获取你正在寻找的精确度。

window.myApp.registrationTime = window.myApp.endTime - window.myApp.startTime

需要将

window.myApp.registrationTime发送回服务器,如上所述,只有服务器能够以您希望的方式跟踪最近15次注册。

答案 2 :(得分:0)

正如已经提到的,你不能真正使用cookie,因为它们存储在用户的机器上,而不是服务器上。您可以做的是获取ready事件触发的时间,然后获取表单提交的时间:

$(document).ready(function() {
    var startTime = (new Date()).getTime();
    $("#yourForm").submit(function() {
       var endTime = (new Date()).getTime(),
           totalTime = endTime - startTime;
    });
});

然后,您可以将时间存储在隐藏的input中,并将其与表单一起提交。将时间与用户注册数据一起存储在数据库中,只需查询数据库中最近15次注册的平均值即可获得所需数据。