为什么最后一个事件代码不是 if 语句触发?



我想用不同的按键触发代码:

document.addEventListener("keydown", event => {
;(async () => {
if (event.key === 'b' && event.ctrlKey) {
alert('1')
} else if (event.code === 'Space' && event.ctrlKey) {
alert('2')
} else if (event.code === 'q' && event.ctrlKey) {
alert('3')
}
})()
})

奇怪的是,最后一个 if 语句不会触发。即使我把b换成q.

可能是什么原因?

没有任何错误。

https://jsfiddle.net/wn78dc5r/

code更改为key

else if (event.key === 'q' && event.ctrlKey)

这是因为event.code在按下q的情况下返回KeyQ。请尝试改用event.key

我会稍微简化实现,例如删除 IIFE 和异步,并重用event.ctrlKey

document.addEventListener("keydown", event => {
if (!event.ctrlKey) return

if (event.key === 'b') {
alert('1')
} else if (event.code === 'Space' ) {
alert('2')
} else if (event.key === 'q') {
alert('3')
}
})

最新更新