使用JavaScript检测按键持续时间



我对JavaScript很陌生,很抱歉,如果这是一个愚蠢的问题,我还没能在网上找到一个好的答案。

我目前正在使用:

document.body.addEventListener("keydown", function(e) { keys[e.keyCode] = true; });
document.body.addEventListener("keyup", function(e) { keys[e.keyCode] = false; });

检测用户输入,这对我的目的来说非常有效,但我想不出一个好的方法来计算按键按下了多长时间。

我尝试过放置一个while循环,如果keys[index]返回false并在循环中增加一个计数器,该循环就会退出,但这似乎只是破坏了脚本。我想我可以写一个函数来专门检测我想要的密钥是否已经释放,但我不知道如何正确地进行。

此外,我只需要检查它的一个密钥。

与其设置布尔值,不如在keydown上设置时间戳,然后检索它并与keyup上的当前时间戳进行比较:

const signalKeypressDuration = (key, duration) => {
console.log(`Key ${key} pressed for ${duration} ms`);
};
const keys = {};
document.body.addEventListener("keydown", ({ key }) => {
if (!keys[key]) keys[key] = Date.now();
});
document.body.addEventListener("keyup", ({ key }) => {
signalKeypressDuration(key, Date.now() - keys[key]);
keys[key] = null;
});

不要在keydown中放入true,而是放入new Date()。计算new Date() - keys[e.keyCode]并将其存储在某个位置,而不是将false放在keyup中。

相关内容

  • 没有找到相关文章

最新更新