Как обработать ctrl+arrow в JavaScript?

Я заметил проблему при попытке поймать сочетание клавиш: CTRL + стрелка.

Я обработал keydown событие. Теперь, когда я держу клавишу CTRL затем keydown, событие запущено однажды. Если я держу стрелку (так, чтобы теперь я держал CTRL + стрелка), он не запускает другое событие. Этому запрещают какую-либо причину? Я предполагаю, что уже встретился с этой проблемой в Opera несколько лет назад и была опция для него в браузере.

Мои результаты:

  • при содержании CTRL нажмите стрелку - событие огней для CTRL и не увольняйте событие за стрелку

  • нажмите CTRL +, стрелка сразу - запускает одно событие, но только с кодом клавиши CTRL.

  • при содержании CTRL нажмите букву (например, S) - работы как ожидалось

  • нажмите CTRL + буква (например, S) - работы как ожидалось

(Результаты идентичны в Chrome и Firefox. Поведение описано выше стандарта?)

Я использую:

  • function OnKeyDown(e) { }
  • e.ctrlKey, свойства e.which события

Вопрос: какова могла бы быть проблема?

8
задан Jasper 13 September 2011 в 12:40
поделиться

1 ответ

Вы должны проверить, установлен ли флаг event.ctrlKey , примерно так:

document.getElementById('element').onkeydown = function (e) { 
  e = e || window.event;
  var keyCode = e.keyCode || e.which,
      arrow = {left: 37, up: 38, right: 39, down: 40 };

  if (e.ctrlKey) {
    switch (keyCode) {
      case arrow.left:
      //... handle Ctrl-LeftArrow
      break;
      //...
    }
  }
};

Посмотрите пример здесь .

13
ответ дан 5 December 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: