2015 answer
DOM3 добавил свойство location
событий клавиатуры (см. Также 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 ответ
Нет.В общем, невозможно различить левую и правую клавиши-модификаторы в кросс-браузерном режиме.Все свойства shiftLeft
, shiftRight
, ctrlLeft
, ctrlRight
, altLeft
, altRight
window.event
относятся только к IE, и в других браузерах не существует эквивалента.
DOM3 добавилlocation
свойство событий клавиатуры (более ранние версии имели свойство keyLocation
вместо этого), но Firefox не реализует это.