Как я могу получить время нажатия кнопки с помощью Jquery?

Я хотел бы показать среднее время регистрации моего клиента в секундах на странице регистрации. Среднее время будет основано на последних 15 регистрациях с использованием файлов cookie.

Вот пример текста, который я хочу использовать на своей странице регистрации:

Регистрация займет около 3,1 секунды. Это среднее значение последних 15 регистраций.

Какие-либо предложения?


person Meg Ann    schedule 24.09.2011    source источник
comment
это может быть полезно ---------› stackoverflow.com/questions/1211414/page-load-time-with-jquery   -  person Kanishka Panamaldeniya    schedule 24.09.2011
comment
OP не требует времени загрузки страницы.   -  person Samich    schedule 24.09.2011


Ответы (3)


Ты уверен? Файлы 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
    }
}
person Samich    schedule 24.09.2011

Как уже упоминалось, вы не можете использовать файлы cookie, поскольку они хранятся на компьютере пользователя, а не на сервере. Что вы можете сделать, так это получить время, когда срабатывает событие ready, а затем получить время отправки формы:

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

Затем вы можете сохранить затраченное время в скрытом input и отправить его вместе с формой. Сохраните время в базе данных вместе с регистрационными данными пользователей и просто запросите в базе данных среднее значение последних 15 регистраций, чтобы получить нужные данные.

person James Allardice    schedule 24.09.2011

Отслеживание времени на стороне клиента будет более точным, чем отслеживание времени на стороне сервера, поскольку отслеживание времени на стороне сервера не учитывает задержку полосы пропускания или время загрузки. Если у пользователя медленное соединение, мобильное соединение или он заходит на сайт из другой страны, это может серьезно повлиять на результаты расчета времени, если строго отслеживаться на стороне сервера.

В событии клика для кнопки просто установите время клика как . . .

$('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 регистраций так, как вы хотите.

person Allen Tellez    schedule 24.09.2011