有没有一种方法可以检测到按下Alt键的哪一侧,即区分左Alt键还是右Alt键?我在某处看到IE可以通过altLeft对象的altRightEvent属性来实现。如果正确,我们如何在Firefox中使用JavaScript进行检测?

这就是IE中altLeft的工作方式:

window.onload = function(){
  document.getElementById('id').onkeydown = function(){
    alert(window.event.altLeft);
  }
}

最佳答案

2015年答案

DOM3添加了 location property of keyboard events(另请参见MDN)(较早的版本具有keyLocation属性),该功能可以满足您的要求,并且已在所有主要浏览器的最新版本中实现。

演示:

document.getElementById("ta").addEventListener("keydown", function(e) {
  var keyLocation = ["Standard", "Left", "Right", "Numpad", "Mobile", "Joystick"][e.location];
  var message = "Key '" + (e.key || e.keyIdentifier || e.keyCode) + "' is down. Location: " + keyLocation;
  this.value += "\n" + message;
  e.preventDefault();
}, false);
<textarea id="ta" rows="10" cols="50">Click on here and press some modifier keys such as Shift</textarea>


2011年答案

不能。通常,不可能以跨浏览器的方式来区分左右修饰键。 shiftLeftshiftRightctrlLeftctrlRightaltLeftaltRightwindow.event属性均为IE,并且在其他浏览器中不存在。

DOM3添加了 location property of keyboard events(早期版本则具有keyLocation属性),但Firefox并未实现。

10-05 21:55