如何在Javascript中处理ctrl +箭头?

时间:2010-04-22 18:46:36

标签: javascript keyboard-shortcuts

我在尝试捕捉键盘快捷键时发现了一个问题: CTRL +箭头。

我已经处理了keydown事件。现在当我按住 CTRL 键时,keydown事件被触发一次。如果我持有一个箭头(现在我持有 CTRL +箭头),它不会触发另一个事件。是出于任何原因禁止的吗?我想几年前我已经在Opera中遇到过这个问题,并且在浏览器中有一个选项。

我的结果:

  • 按住 CTRL ,按箭头 - 触发 CTRL 的事件,并且不会触发箭头事件

  • 立即按 CTRL +一个箭头 - 触发一个事件但仅使用 CTRL 的键码。

  • 按住 CTRL ,按一个字母(例如 S ) - 按预期工作

  • CTRL +字母(例如 S ) - 按预期工作

(Chrome和Firefox的结果相同。上面描述的行为是标准吗?)

我正在使用:

  • function OnKeyDown(e) { }
  • e.ctrlKey,e。属性事件

问题是:可能是什么问题?

1 个答案:

答案 0 :(得分:11)

你应该检查event.ctrlKey标志是否为真,如下所示:

document.getElementById('element').onkeydown = function (e) { 
  e = e || window.event;
  var keyCode = e.keyCode || e.which,
      arrow = {left: 37, up: 38, right: 39, down: 40 };

  if (e.ctrlKey) {
    switch (keyCode) {
      case arrow.left:
      //... handle Ctrl-LeftArrow
      break;
      //...
    }
  }
};

查看示例here