事件:timeStamp 属性

注意: 此功能在 Web Workers 中可用。

Event 接口的只读属性 timeStamp 返回事件创建时的时间(以毫秒为单位)。

此值是从时间起点开始到事件创建时经过的毫秒数。如果全局对象是 Window,时间起点是用户单击链接或启动文档加载的脚本的时刻。在 worker 中,时间起点是创建 worker 的时刻。

该值是一个 DOMHighResTimeStamp,精度为 5 微秒(0.005 毫秒),但 精度已降低 以防止 指纹识别

示例

HTML

html
<p>
  Focus this iframe and press any key to get the current timestamp for the
  keypress event.
</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 偏好设置默认启用,默认值为 2 毫秒。您还可以启用 privacy.resistFingerprinting,在这种情况下,精度将为 100 毫秒或 privacy.resistFingerprinting.reduceTimerPrecision.microseconds 的值,取两者中较大的那个。

例如,在降低时间精度的情况下,event.timeStamp 的结果将始终是 2 的倍数,或者在启用 privacy.resistFingerprinting 的情况下,是 100(或 privacy.resistFingerprinting.reduceTimerPrecision.microseconds)的倍数。

js
// reduced time precision (2ms) in Firefox 60
event.timeStamp;
// Might be:
// 9934
// 10362
// 11670
// …

// reduced time precision with `privacy.resistFingerprinting` enabled
event.timeStamp;
// Might be:
// 53500
// 58900
// 64400
// …

规范

规范
DOM 标准
# ref-for-dom-event-timestamp①

浏览器兼容性

BCD 表格仅在浏览器中加载