代码之家  ›  专栏  ›  技术社区  ›  MartyIX

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

  •  6
  • MartyIX  · 技术社区  · 15 年前

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

    我已经处理过按键事件。现在当我握住 CTRL 然后keydown事件被触发一次。如果我拿着一支箭 CTRL +箭头)它不会触发另一个事件。有什么理由禁止吗?我想我几年前在Opera中已经遇到过这个问题,浏览器中有一个选项。

    我的结果是:

    • 举办 CTRL ,按箭头--激发事件 CTRL 也不会为了箭而开火

    • CTRL +一个箭头--触发一个事件,但只使用 CTRL .

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

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

    (结果在chrome和firefox中是一样的。上述行为是否为标准?)

    我正在使用:

    • function OnKeyDown(e) { }
    • e.ctrlKey ,e.事件的哪些属性

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

    1 回复  |  直到 13 年前
        1
  •  10
  •   Christian C. Salvadó    15 年前

    你应该检查一下 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 .