Я заметил проблему при попытке поймать сочетание клавиш: CTRL + стрелка.
Я обработал keydown событие. Теперь, когда я держу клавишу CTRL затем keydown, событие запущено однажды. Если я держу стрелку (так, чтобы теперь я держал CTRL + стрелка), он не запускает другое событие. Этому запрещают какую-либо причину? Я предполагаю, что уже встретился с этой проблемой в Opera несколько лет назад и была опция для него в браузере.
Мои результаты:
при содержании CTRL нажмите стрелку - событие огней для CTRL и не увольняйте событие за стрелку
нажмите CTRL +, стрелка сразу - запускает одно событие, но только с кодом клавиши CTRL.
при содержании CTRL нажмите букву (например, S) - работы как ожидалось
нажмите CTRL + буква (например, S) - работы как ожидалось
(Результаты идентичны в Chrome и Firefox. Поведение описано выше стандарта?)
Я использую:
function OnKeyDown(e) { }
e.ctrlKey
, свойства e.which событияВопрос: какова могла бы быть проблема?
Вы должны проверить, установлен ли флаг 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;
//...
}
}
};
Посмотрите пример здесь .