Справочник 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 года.
Возвращаемое значение: (число) миллисекунды; точка отсчёта зависит от источника события (см. примечания).
Примечание:
Из-за разной точки отсчёта event.timeStamp нельзя напрямую сравнивать с
Date.now()или использовать как «время события в часах и минутах». Абсолютное время события в привычном формате нужно брать черезnew Date(), вызванный в момент обработки события, а timeStamp использовать только для измерения интервалов между событиями (разница двух вызовов timeStamp одного и того же типа — корректная величина в миллисекундах).Ещё момент:
Из соображений защиты от снятия «отпечатков» браузера точность timeStamp в некоторых браузерах намеренно снижена (округление до долей миллисекунды в обычном контексте) — на бытовые задачи (профилирование интерфейса) это не влияет.
В jQuery 3.x и 4.0:
Поведение не менялось. Нативное свойство — то же
Event.timeStamp, определённое стандартом DOM; описанная выше точка отсчёта (time origin, а не эпоха Unix) — это изменение в самих браузерах за последние годы, а не в jQuery.
Примеры:
Измеряем интервал между двумя кликами по одному элементу:
var lastClick = null; $( "#btn" ).on( "click", function ( event ) { if ( lastClick !== null ) { console.log( "Прошло мс с прошлого клика:", event.timeStamp - lastClick ); } lastClick = event.timeStamp; } );Реализуем простую защиту от двойного клика (дебаунс) по разнице timeStamp:
var lastSubmit = 0; $( "#order-form" ).on( "submit", function ( event ) { if ( event.timeStamp - lastSubmit < 1000 ) { event.preventDefault(); return; } lastSubmit = event.timeStamp; } );