检查密钥是否已关闭?
2022-08-30 05:19:14
有没有办法检测某个密钥当前在 JavaScript 中是否已关闭?
我知道“keydown”事件,但这不是我需要的。按下键后的一段时间,我希望能够检测到它是否仍然被按下。
附言:最大的问题似乎是,经过一段时间后,密钥开始重复,像恶魔一样触发keydown和keyup事件。希望只有一个简单的isKeyDown(key)函数,但如果没有,那么这个问题将需要克服/解决。
有没有办法检测某个密钥当前在 JavaScript 中是否已关闭?
我知道“keydown”事件,但这不是我需要的。按下键后的一段时间,我希望能够检测到它是否仍然被按下。
附言:最大的问题似乎是,经过一段时间后,密钥开始重复,像恶魔一样触发keydown和keyup事件。希望只有一个简单的isKeyDown(key)函数,但如果没有,那么这个问题将需要克服/解决。
除了使用 和 侦听器来跟踪 is key 何时关闭和备份之外,实际上还有一些属性可以告诉您某些键是否关闭。keyup
keydown
window.onmousemove = function (e) {
if (!e) e = window.event;
if (e.shiftKey) {/*shift is down*/}
if (e.altKey) {/*alt is down*/}
if (e.ctrlKey) {/*ctrl is down*/}
if (e.metaKey) {/*cmd is down*/}
}
这在所有浏览器生成的事件对象(如 、 和 中的事件对象)上都可用,因此您不必使用 mousemove。keydown
keyup
keypress
我尝试使用和查找等生成自己的事件对象,但我没有运气。document.createEvent('KeyboardEvent')
document.createEvent('KeyboardEvent')
e.shiftKey
我在 Mac 上使用 Chrome 17
有没有办法检测某个密钥当前在 JavaScript 中是否已关闭?
不。唯一的可能性是监视每个和并记住。keyup
keydown
一段时间后,密钥开始重复,像恶魔一样触发keydown和keyup事件。
它不应该。你肯定会重复,在许多浏览器中,你也会重复,但如果重复,这是一个错误。keypress
keydown
keyup
不幸的是,这并不是一个完全闻所未闻的错误:在Linux,Chromium和Firefox上(当它在GTK +下运行时,它在Ubuntu等流行的发行版中)都为持有的键生成重复的键 - 按键 - 按键 - 按键序列,这不可能与真正快速敲击键的人区分开来。