我正在尝试在浏览器上实现键盘快捷键。当事件侦听器被触发时,我希望确保只按下某个组合键,而不按下其他键。
例如,如果我想将键"A“注册为快捷方式,代码可能如下所示。
document.addEventListener("keydown", (event) => {
if (event.key.toLowerCase() === "a" && numberOfKeysCurrentlyBeingPressed === 1) {
// Do something
}
});这将触发A,而不是像Ctrl + A或A + B这样的东西。
我考虑过使用keydown和keyup事件侦听器来计数和跟踪按下的键数,但某些系统上的某些键只触发一个事件侦听器(keydown或keyup),而不触发另一个。此外,这种方法存在一些不一致之处,并不是一个可行的解决方案。
我正在寻找一种方法,当键盘事件侦听器被触发时,准确地知道有多少键被按下,这样我就可以将这个数字与键盘快捷键组合中涉及的键的数量进行比较。
发布于 2020-11-06 04:38:23
var keyPresses = 0;
window.addEventListener('keyup', (e) => {
keyPresses--
})
window.addEventListener('keydown', (e) => {
if (!e.repeat) {
keyPresses++
}
if (e.key.toLowerCase() === 'a' && keyPresses === 1) {
//do something
}
})https://stackoverflow.com/questions/64704647
复制相似问题