[英]Handling key-press events (F1-F12) using JavaScript and jQuery, cross-browser
[英]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.