Обнаружьте двойное нажатие клавиши Ctrl в JS

Я имею пользовательский CMS и хотел бы добавить "меню ярлыков", инициированное нажатием клавиши Ctrl дважды в, скажем, 300 миллисекундах. Я использую прототип, таким образом, моя начальная точка, очевидно:

Event.observe(document, 'keypress', function(event)
  { if(event.keyCode == Event.KEY_XYZ) { show_shortcuts});

Мой подход в данный момент заполнил бы глобальную переменную с текущим временем в миллисекундах и проверил бы каждое нажатие клавиши, произошло ли нажатие клавиши меньше чем 300 миллисекунд назад.

Но возможно существует более изящное решение?

5
задан Brian Tompsett - 汤莱恩 21 July 2019 в 15:45
поделиться

1 ответ

Это должно работать. Может быть, добавьте дополнительную проверку, не нажата ли одновременно какая-либо другая клавиша, такая как Alt или Shift. Надеюсь, это говорит само за себя, если не просто спросить, и я дам разъяснения.

var dblCtrlKey = 0;
Event.observe(document, 'keydown', function(event) {
  if (dblCtrlKey != 0 && event.keyCode == 17) {
    alert("Ok double ctrl");
  } else {
    dblCtrlKey = setTimeout('dblCtrlKey = 0;', 300);
  }
});
6
ответ дан 14 December 2019 в 13:39
поделиться
Другие вопросы по тегам:

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