1分でわかるJavaScriptのキーボードイベント追加方法

キーボードイベント追加について

JavaScriptでイベントを追加する場合、圧倒的にマウスのクリックイベントが多く、キーボードイベントは追加されることは少ない。

しかし、キーボードイベントも追加したほうがユーザービリティが向上することがある。

例えばカルーセル(スライダー)の場合は左右のボタンおよび閉じるボタンにclickイベントを割り当てることが多いが、左右を左キーと右キー、閉じるをEscapeキーに割り当てると使い勝手が良くなる。

キーボードイベント追加方法

キーボードイベントはaddEventListenerでkeydownを指定する。

keypressは現在は非推奨なので使用してはいけない。

例えばすでにclickイベントがコード内にあり、keydownを追加で加える場合は以下のようになる。

const result = document.getElementById('result')
const left = document.getElementById('left')
const right = document.getElementById('right')

left.addEventListener('click', () => result.textContent = 'left')
right.addEventListener('click', () => result.textContent = 'right')
document.addEventListener('keydown', onKeyDown)

function onKeyDown(e) {
  switch (e.code) {
    case 'ArrowLeft':
      result.textContent = 'left'
      break
    case 'ArrowRight':
      result.textContent = 'right'
      break
    case 'Escape':
      result.textContent = 'Escape'
      break
  }
}

left right keydown sample

ちなみにキーボードイベント取得にはswitchが使用されることが多いが、オブジェクトを使用して以下のように記述すればコードを短くできる。

function onKeyDown(e) {
  const code = {
    'ArrowLeft': () => result.textContent = 'left',
    'ArrowRight': () => result.textContent = 'right',
    'Escape': () => result.textContent = 'Escape',
  }
  code[e.code]()
}

left right keydown short sample