如何测量 JavaScript 中交互和 mousedown 事件之间的延迟?

How to measure latency between interaction and mousedown event in JavaScript?

有没有办法测量 当我按下鼠标按钮 当定义的 onmousedown 函数触发 之间的延迟?

或者,是否有关于此延迟的最新统计数据?

我假设这两个事件不是同时发生的,并且因浏览器而异。

到目前为止,我唯一的方法是创建多个 onmousedown 事件并使用 Date 测量它们之间的时间差。我发现它们之间最多相差 6 毫秒。

我正在开发对时间敏感(毫秒级)的音频应用程序。

任何帮助都很好,谢谢!

您可能正在寻找 Event.timeStamp and the current timestamp, Date.now() 之间的区别。它们都是 return 自纪元以来经过的时间(以毫秒为单位):

JavaScript

document.getElementById("mydiv").addEventListener('click', function (e) {
    // in milliseconds
    var latency = Date.now() - e.timeStamp;
});

Working example on JSFiddle.

通过从后者中减去前者 - 如您在包含的代码段中所见 - 您可以测量延迟。

不幸的是,事件 timeStamp 不是单击鼠标的实际硬件时刻,而是当浏览器 收到 来自您的 OS.但是,这 总是 在调用事件处理程序之前发生,并且应该具有可忽略的延迟。

关于链接fiddle,我的时间差大部分时间都在1ms以下;我偶尔会通过无情的按钮粉碎和页面重新加载来实现 10 毫秒以上的值,但这并不常见。当然,如果您在事件处理程序中执行更多计算密集型任务,差异很容易攀升,在这种情况下,延迟补偿很快就会成为必不可少的部分。