Справочник API

event.timeStamp в jQuery

Содержание статьи
  • Категории: Events › Event Object

    Содержит число миллисекунд с 1 января 1970 года до момента срабатывания события.

Синтаксис и описание:

  • Добавлено в jQuery 1.2.6event.timeStamp

  • Свойство event.timeStamp содержит момент создания события в миллисекундах. В современных браузерах это DOMHighResTimeStamp — число миллисекунд, прошедших от так называемой точки отсчёта времени страницы (time origin, обычно момент начала навигации), а не от 1 января 1970 года, как иногда пишут в старых материалах.

  • jQuery берёт значение непосредственно из исходного нативного события: внутри jQuery используется выражение вида src && src.timeStamp || Date.now() — то есть если у объекта события, из которого создаётся jQuery.Event, есть собственный timeStamp, используется он; если исходного события нет (например, объект создан вручную для .trigger()), время берётся через Date.now() — а вот это уже миллисекунды именно от 1 января 1970 года.

Возвращаемое значение: (число) миллисекунды; точка отсчёта зависит от источника события (см. примечания).

  1. Примечание:

    Из-за разной точки отсчёта event.timeStamp нельзя напрямую сравнивать с Date.now() или использовать как «время события в часах и минутах». Абсолютное время события в привычном формате нужно брать через new Date(), вызванный в момент обработки события, а timeStamp использовать только для измерения интервалов между событиями (разница двух вызовов timeStamp одного и того же типа — корректная величина в миллисекундах).

  2. Ещё момент:

    Из соображений защиты от снятия «отпечатков» браузера точность timeStamp в некоторых браузерах намеренно снижена (округление до долей миллисекунды в обычном контексте) — на бытовые задачи (профилирование интерфейса) это не влияет.

  3. В jQuery 3.x и 4.0:

    Поведение не менялось. Нативное свойство — то же Event.timeStamp, определённое стандартом DOM; описанная выше точка отсчёта (time origin, а не эпоха Unix) — это изменение в самих браузерах за последние годы, а не в jQuery.

Примеры:

  1. Измеряем интервал между двумя кликами по одному элементу:

    var lastClick = null;
    
    $( "#btn" ).on( "click", function ( event ) {
      if ( lastClick !== null ) {
        console.log( "Прошло мс с прошлого клика:", event.timeStamp - lastClick );
      }
      lastClick = event.timeStamp;
    } );
  2. Реализуем простую защиту от двойного клика (дебаунс) по разнице timeStamp:

    var lastSubmit = 0;
    
    $( "#order-form" ).on( "submit", function ( event ) {
      if ( event.timeStamp - lastSubmit < 1000 ) {
        event.preventDefault();
        return;
      }
      lastSubmit = event.timeStamp;
    } );

[ наверх ]

Вопросы и ответы

Для чего используется event.timeStamp в jQuery?

Содержит число миллисекунд с 1 января 1970 года до момента срабатывания события.

Поиск по материалам

Начните вводить — поиск работает по заголовкам и тексту.

Esc — закрытьВсе материалы →