Обнаружить двойное нажатие клавиши Ctrl в JS - PullRequest
4 голосов
/ 10 ноября 2009

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

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

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

Но может быть, есть более элегантное решение?

1 Ответ

6 голосов
/ 10 ноября 2009

Это должно работать. Возможно, добавьте еще одну проверку, если одновременно не нажимаются другие клавиши, такие как 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);
  }
});
...