7

我有一个自定义 CMS,想添加一个“快捷菜单”,由在Ctrl300 毫秒内按两次键触发。我使用原型,所以我的出发点显然是:

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

我目前的方法是用当前时间(以毫秒为单位)填充一个全局变量,并检查每个按键是否发生在不到 300 毫秒前。

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

4

2 回答 2

8

这应该有效。如果没有同时按下 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);
  }
});

https://jsfiddle.net/3tc26g7x/

于 2009-11-10T12:53:22.003 回答
3

function doubleControlEvent() {
  if (event.key === 'Control') {
  	timesCtrlClicked++
    if (timesCtrlClicked >= 2) {
      console.log('Double control')
      // Double Crtl is clicked add your code here
    }
    setTimeout(() => (timesCtrlClicked = 0), 200)
  }  
}

let timesCtrlClicked = 0;
document.addEventListener('keyup', doubleControlEvent, true)

于 2020-03-23T10:43:28.873 回答