簡體   English   中英

使用 JavaScript 檢測按鍵的持續時間

[英]Detecting duration of key-press using 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() 不要在keyup中輸入false ,而是計算new Date() - keys[e.keyCode]並將其存儲在某處。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM