--- title: DOMHighResTimeStamp slug: Web/API/DOMHighResTimeStamp tags: - DOMHighResTimeStamp - High Resolution Time translation_of: Web/API/DOMHighResTimeStamp ---
{{APIRef("High Resolution Time")}}
DOMHighResTimeStamp
是一个double类型,用于存储毫秒级的时间值。这种类型可以用来描述离散的时间点或者一段时间(两个离散时间点之间的时间差)。
这种基于毫秒精度的时间,应该精确到5微秒级别,其数值的小数部分代表了一个毫秒的小数(也就是微秒)。但是,如果浏览器不能提供精确到5微秒的时间值(例如,由于硬件或软件的限制),浏览器可以在表示一个以毫秒为单位的时间值时,精确到毫秒级别。同时要注意,在下一节中提到,由浏览器首选项控制的降低时间精度,是为了防止时序攻击和记录指纹。
此外,如果用户代理运行所在的设备或操作系统不具备精确到微秒级别的时钟,那么他们只能精确到毫秒。
为了提供对抗时序攻击和记录指纹的保护措施,时间戳可能会四舍五入,这取决于浏览器设置。在火狐浏览器中,privacy.reduceTimerPrecision
首选项默认被启用,并且在或火狐浏览器59版本中,它的默认值是20微秒。在火狐浏览器60版本中,这个默认值将是2毫秒。
// reduced time precision (2ms) in Firefox 60 event.timeStamp // 1519211809934 // 1519211810362 // 1519211811670 // ... // reduced time precision with `privacy.resistFingerprinting` enabled event.timeStamp; // 1519129853500 // 1519129858900 // 1519129864400 // ...
在火狐浏览器中,你也可以启用 privacy.resistFingerprinting
,这使得时间戳的精度变成100毫秒或 privacy.resistFingerprinting.reduceTimerPrecision.microseconds
的值,以较大者为准。
这个类型没有属性。它是一个双精度浮点数。
DOMHighResTimeStamp
的值是一个双精度浮点数,它描述了两个时间点之间的经过的毫秒数(可以精确到5微秒,如果设备支持)。开始时间可以是由网站或app中的脚本定义的一个特定时间T,也可以是时间源。
时间源是一个可以被认定为当前文档生命周期的开始节点的标准时间,计算方法如下:
Window
, 则时间源是创建浏览器上下文的时间。Document
的导航发生的时机。这个类型没有方法。
您可以通过调用 {{domxref("performance")}} 的 {{domxref("performance.now", "now()")}} 方法来获取当前的时间戳的值(自创建上下文以来经过的时间)。此方法在 {{domxref("Window")}} 和 {{domxref("Worker")}} 上下文中均可用.
如果你需要确定从代码中某处开始经过了多少时间,可以执行以下操作:
let startTime = performance.now(); /* ... do things for a while ... */ let elapsedTime = performance.now() - startTime;
执行完毕后, elapsedTime
的值是从你在第一行代码记录的时间点开始后经过的毫秒数。
Specification | Status | Comment |
---|---|---|
{{SpecName('Highres Time Level 2', '#dom-domhighrestimestamp', 'DOMHighResTimeStamp')}} | {{Spec2('Highres Time Level 2')}} | Stricter definitions of interfaces and types. |
{{SpecName('Highres Time', '#sec-DOMHighResTimeStamp', 'DOMHighResTimeStamp')}} | {{Spec2('Highres Time')}} | Initial definition. |
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | 6 | {{CompatGeckoDesktop("7.0")}} | 9 | 15.0 | 8 |
Feature | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | {{CompatVersionUnknown}} | {{CompatGeckoMobile("15.0")}} | 9 | 15.0 | 9 |