2009-11-10 78 views
3

我有一个自定义的CMS,并希望添加一个“快捷键菜单”,例如在300毫秒内按下两次Ctrl键。 我用的样机,所以我的出发点显然是:在JS中检测到双Ctrl Ctrl键盘

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

我当时的做法将被填充一个全局变量,以毫秒为单位的当前时间,并且在每个按键一个按键是否已经发生了检查小于300毫秒前。

但也许有一个更优雅的解决方案?

+0

不敢相信@Pekka웃有没有给予好评的一个问题,是第一个笑,并且还发现有用的这个问题,我一直在寻找二班 – ncubica 2015-06-22 04:51:56

回答

6

这应该工作。也许添加一些进一步的检查,如果不是像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); 
    } 
}); 
+0

它的工作原理,但它也激发时Ctrl键保持按下300毫秒。我将不得不添加一个“keyup”检查器,但这将作为它的基础。干杯! – 2009-11-10 13:37:49

+0

当按键仍然按下时,它不会为我开火。可能是浏览器特定的(我正在使用Opera) – jitter 2009-11-10 13:43:50

+1

@Pekka只是使用'keyup'来代替;-) – yckart 2012-12-01 17:26:01

相关问题