我有这样一个需求, 需要检测用户正在按下的按键,如果是某一个组合按键(比如command + shift + p), 我就执行某一个操作。
但是遇到了问题, 就是复合按键的keyup事件没有触发,而仅仅触发了keydown。
代码:
const pressingKeyCode = {};
const COMMAND = 91;
const SHIFT = 16;
const P = 80;
window.addEventListener('keydown', e => {
console.log('keydown', e.keyCode);
pressingKeyCode[e.keyCode] = true;
if (
pressingKeyCode[COMMAND] &&
pressingKeyCode[SHIFT] &&
pressingKeyCode[P]
) {
console.log('呵呵');
}
});
function handleKeyUp(e) {
console.log('keyup', e.keyCode);
pressingKeyCode[e.keyCode] = false;
}
window.addEventListener('keyup', handleKeyUp);
单个按键是没有问题的
可重现的demo地址: https://codepen.io/zhipenglu/...
由于我这边是Windows,所以用CTRL的
Keycode(17)
没看懂题目的意思,复合按键的keyup事件没有触发
我这里尝试替换了一下,没有这个问题。https://codepen.io/mscststs/p...