javascript - 检测JS中的双Ctrl键

标签 javascript prototypejs keypress dom-events

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

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);
  }
});
https://jsfiddle.net/3tc26g7x/

关于javascript - 检测JS中的双Ctrl键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1707650/

相关文章:

退出表单时确认的 JavaScript 消息

java - 如何知道用户何时真正释放了Java中的 key ?

javascript - 为什么我的自定义钩子(Hook)被调用了这么多次?

javascript - 数据未绑定(bind)在 View 中

javascript - 在 Chrome 中将鼠标悬停在文本区域上的奇怪行为

javascript - 如何使用 Prototype 选择给定表单元素中的所有表单字段?

c++ - 如何在 Qt 控制台应用程序中处理按键事件?

javascript - 为什么 preventDefault() 在 Tab 键按下后不停止焦点更改?

javascript - Angular:将逻辑写入绑定(bind)

javascript - 是否可以在js中覆盖CSS