2015-02-23 62 views
2

当定义的onmousedown函数触发时,我是否按下鼠标按钮和来测量之间的延迟如何测量JavaScript中交互和mousedown事件之间的延迟?

或者,是否有目前的统计数据提供了有关这个延迟?

我认为这两个事件不是同时进行的,通过浏览器的不同而不同。

我唯一的方法迄今已创建多个onmousedown事件的事件,并使用日期测量它们之间的时间差。我发现他们之间有6毫秒的差异。

我的工作,哪些是时间敏感(以毫秒为单位)的音频应用。

任何帮助是伟大的,谢谢!

+0

我特别感兴趣的是桌面浏览器;我知道移动事件延迟300毫秒,但这不是我想要测量的。 – suncannon 2015-02-23 18:13:49

+0

使用JavaScript进行时间敏感功能可能不是您的最佳选择。我建议您研究其他具有更好定义的应用程序的工具。 – Palpatim 2015-02-23 18:17:42

+0

_“对时序敏感的函数使用JavaScript可能不是您的最佳选择。”_ - 同时请记住** JavaScript是单线程**。 – 2015-02-23 18:32:46

回答

3

你很可能寻找Event.timeStamp和当前的时间戳,Date.now()之间的差异。他们都返回经过的时间以毫秒为单位的时代:

的JavaScript

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

Working example on JSFiddle.

通过减去前者从后者 - ,你可以在包括片段看到 - 你可以测量延迟。

不幸的是,事件timeStamp不是鼠标点击的实际硬件时刻,而是浏览器从您的操作系统收到点击事件。然而,这个总是发生在事件处理程序被调用之前,并且应该具有可以忽略的延迟。

关于链接小提琴,我的时间差低于1ms的大部分时间;偶尔我设法通过无情的按钮粉碎和页面重新加载实现超过10毫秒的值,但这并不常见。当然,如果您在事件处理程序中执行更多计算密集型任务,则差异可能会轻松攀升,在这种情况下,延迟补偿可能会迅速成为重要部分。

+1

'.timeStamp'非常好的应用程序! – Bergi 2015-02-23 18:58:18