Event.timeStamp
Event 인터페이스의 timeStamp 읽기 전용 속성은 이벤트가 생성된 시간을 밀리초 단위로 반환합니다.
값
시간 원점으로부터 이벤트가 생성되기까지 경과한 시간을 밀리초 단위로 나타낸 수입니다. 전역 객체가 Window라면, 시간 원점은 사용자가 링크를 클릭했던 시점, 혹은 스크립트가 문서의 로딩을 시작했던 시점입니다. 워커에서의 시간 원점은 워커가 생성된 시점입니다.
이 값은 5 마이크로초(0.005ms)까지 정확한 DOMHighResTimeStamp (en-US)지만, 핑거프린팅을 방지하기 위해 낮은 정밀도로 제공합니다.
예제
HTML
html
<p>
이 프레임에 포커스를 두고 아무 키나 눌러
keypress 이벤트의 현재 타임스탬프를 알아보세요.
</p>
<p>timeStamp: <span id="time">-</span></p>
JavaScript
js
function getTime(event) {
const time = document.getElementById('time');
time.firstChild.nodeValue = event.timeStamp;
}
document.body.addEventListener('keypress', getTime);
결과
감소된 시간 정밀도
타이밍 공격과 핑거프린팅을 방지하기 위해, Event.timeStamp는 브라우저 설정에 따라 일정 자릿수에서 반올림된 값을 반환할 수 있습니다.
Firefox에서는 privacy.reduceTimerPrecision 설정이 기본적으로 활성화된 상태며 값은 2ms입니다.
js
// Firefox 60에서 감소된 시간 정밀도 (2ms)
event.timeStamp;
// 1519211809934
// 1519211810362
// 1519211811670
// ...
// privacy.resistFingerprinting을 활성화했을 때 감소된 시간 정밀도
event.timeStamp;
// 1519129853500
// 1519129858900
// 1519129864400
// ...
Firefox에서 privacy.resistFingerprinting 설정도 함께 활성화할 경우, 정밀도는 100ms와 privacy.resistFingerprinting.reduceTimerPrecision.microseconds의 값 중 더 큰 쪽이 됩니다.
명세
| Specification |
|---|
| DOM Standard # ref-for-dom-event-timestamp① |
브라우저 호환성
BCD tables only load in the browser