Как отловить нажатие двух клавиш одновременно на javascript?

Рейтинг: 0Ответов: 1Опубликовано: 30.03.2015

(ctrl|shift|alt)Key не предлагать.

В идеале, конечно, узнать бы без обработчика, в произвольном месте кода (в моем случае из requestAnimationframe), какие клавиши в данный момент нажаты. Но подойдет и, гм, обработчик подобного события, если это вообще реализуемо. Единственное, что мне пришло в голову - это в onkeydown собирать в очередь нажатые клавиши, а в requestAnimationframe эту очередь разбирать.

Но если одна клавиша зажата, то нажатие других keydown не ловит. (

Ответы

▲ 1Принят

Попробуйте.

var keys = [];
$(document).keydown(function(e){
    var code = e.which;
    if (keys.indexOf(code)<0){
        keys.push(code);
    }
    console.log(keys);
});

$(document).keyup(function(e){
  keys.splice(keys.indexOf(e.which),1);
  console.log(keys);
});

https://jsfiddle.net/o6rc1fct/
ЗЫ И букв получилось меньше, чем в вопросе.