Javascript 检测JS中的双Ctrl键

Javascript 检测JS中的双Ctrl键,javascript,prototypejs,keypress,dom-events,Javascript,Prototypejs,Keypress,Dom Events,我有一个自定义的CMS,并想添加一个“快捷菜单”按下两次Ctrl键触发,比如说,300毫秒。 我使用原型,所以我的出发点显然是: Event.observe(document, 'keypress', function(event) { if(event.keyCode == Event.KEY_XYZ) { show_shortcuts}); 我目前的方法是用当前时间(以毫秒为单位)填充一个全局变量,并在每个按键上检查按键是否发生在300毫秒之前 但也许有一个更优雅的解决方案 这应该行得

我有一个自定义的CMS,并想添加一个“快捷菜单”按下两次Ctrl键触发,比如说,300毫秒。 我使用原型,所以我的出发点显然是:

Event.observe(document, 'keypress', function(event)
  { if(event.keyCode == Event.KEY_XYZ) { show_shortcuts});
我目前的方法是用当前时间(以毫秒为单位)填充一个全局变量,并在每个按键上检查按键是否发生在300毫秒之前


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

这应该行得通。如果没有同时按下Alt或Shift等其他键,可能会添加一些进一步的检查。希望这是不言自明的,如果不只是问,我提供澄清

var dblCtrlKey = 0;
Event.observe(document, 'keydown', function(event) {
  if (dblCtrlKey != 0 && event.ctrlKey) {
    alert("Ok double ctrl");
    dblCtrlKey = 0;
  } else {
    dblCtrlKey = setTimeout('dblCtrlKey = 0;', 300);
  }
});

函数doubleControlEvent(){
如果(event.key==='Control'){
时间点击++
如果(时间点击>=2){
console.log('Double control')
//双击Crtl,在此处添加代码
}
setTimeout(()=>(timesCtrlClicked=0),200)
}  
}
让timesCtrlClicked=0;

document.addEventListener('keyup',doubleControlEvent,true)
它可以工作,但是当按住Ctrl键300毫秒时也会触发。我将不得不添加一个“键控”检查器,但这将作为它的基础。干杯当按键保持按下时,它不会为我点火。可能是特定于浏览器的(我正在使用Opera)@Pekka只需使用
keyup
即可;-)@jitter我确实尝试过您的解决方案,但是在按下ctrl键时,dblCtrlKey值打印为139。我想知道我错过了什么。如果你有一个被剪断的视频,我将非常感激。@bijayshrestha添加了一个jsfiddle。
dblCtrlKey
变量的值不相关@Pekka웃 有一个没有投票权的问题,是第一个lol,也发现这个问题很有用,我正在寻找双移位