【问题标题】:How can I detect if left Alt + letter was pressed如何检测是否按下了左 Alt + 字母
【发布时间】:2016-03-13 01:23:38
【问题描述】:

只有当左 ALT 键与字母 s 一起按下时,我才需要执行一些操作。 当oEvent.altKey === trueString.fromCharCode(oEvent.keyCode) === 'S' 时,我可以找到是否使用keydown 事件按下了一些Alt+s。 我还可以找到左侧或右侧 ALT 是否被按下:

oEvent.originalEvent.location === KeyboardEvent.DOM_KEY_LOCATION_LEFT 

oEvent.originalEvent.location === KeyboardEvent.DOM_KEY_LOCATION_RIGHT

但我找不到将两者结合起来的方法。

【问题讨论】:

  • 这个问题无法理解。你那里没有解决方案吗?
  • 没有。我可以检测到一些 ALT + 's'(左 ALT 或右 ALT),我可以区分左右 ALT 但没有任何字母,但是当我只单击左 ALT 键 + 时我没有找到检测方法字母“s”(或任何其他字母)
  • 阅读this
  • 谢谢,但我已经读过了。正如您在我的问题中看到的那样,我可以区分右/左 ALT 键,但如果您之后添加另一个字母则不能...

标签: javascript keyboard dom-events


【解决方案1】:

为此,您必须注册两个事件,keyUpkeyDown,并且使用单个变量就可以了,

 isleftAltPressed : false,

keyUp: function(e)
{
  var keyCode = e.which ? e.which : e.keyCode;
  if(keyCode == 18)
      isleftAltPressed = false;
},

keyDown: function(e)
{
  var keyCode = e.which ? e.which : e.keyCode;

  if(keyCode == 18 && e.originalEvent.location === KeyboardEvent.DOM_KEY_LOCATION_LEFT)
      isleftAltPressed = true;

    if(e.altKey && isleftAltPressed && keyCode == 83)
      alert("hi");

},

【讨论】:

  • @MarkRobbins 不,它不适用于 Tab 键(在 Windows 操作系统上)我认为系统正在处理顶部的事件,可能在 IOS(Apple)中工作,因为 Alt 键与 Windows 键正常翻转键盘
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-14
  • 2011-06-22
  • 1970-01-01
  • 2012-08-18
  • 2015-10-30
  • 1970-01-01
  • 2012-04-25
相关资源
最近更新 更多