Pergunta

Eu tenho um CMS personalizado e gostaria de adicionar um "menu de atalhos" desencadeada pela prensagem do Ctrl tecla duas vezes dentro de, digamos, 300 milissegundos. Eu uso protótipo, então meu ponto de partida, obviamente, é:

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

A minha abordagem no momento seria preencher uma variável global com a hora atual em milissegundos, e verificar em cada tecla pressionada se uma tecla que aconteceu a menos de 300 milésimos de segundo atrás.

Mas talvez haja uma solução mais elegante?

Foi útil?

Solução

Isso deve funcionar. Talvez adicionar um pouco mais de verificação se não alguma outra tecla como Alt ou mudança são pressionados ao mesmo tempo. Espero que isso é auto-explicativo, se não basta perguntar e eu prestar esclarecimentos.

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);
  }
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top