Почему не запускается этот последний код события if? - PullRequest
0 голосов
/ 19 июня 2020

Я хочу запускать код с разными нажатиями клавиш:

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/

Ответы [ 2 ]

4 голосов
/ 19 июня 2020

Измените code на key

else if (event.key === 'q' && event.ctrlKey)
1 голос
/ 19 июня 2020

Это потому, что event.code возвращает KeyQ в случае нажатия q. Попробуйте вместо этого использовать event.key.

Я бы немного упростил реализацию, удалив IIFE и asyn c и повторно используя 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')
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...