2016-03-18 3 views
0

Я хочу, чтобы отслеживать, какие клавиши нажаты в данный момент времени, например так:Использование KEYCODE в паре KeyDown и KeyUp события

var keys = {}; 
$(document.body).on('keydown', function(e) { 
    keys[e.keyCode] = true; 
}); 
$(document.body).on('keyup', function(e) { 
    delete keys[e.keyCode]; 
}); 

Однако из MDN она выглядит keyCode устарела, и предлагает key , От тестирования на Chrome это выглядит как key is undefined. В документации также описывается which, но я не уверен, каковы различия.

Это ключевой код, подходящий для использования здесь? Мне все равно, какие клавиши опущены, только я знаю, что некоторые клавиши нажаты. Я также не могу использовать событие input.

+0

Попробуйте использовать 'console.log (e)', чтобы увидеть e-_properties_ –

+0

«От тестирования на Chrome это похоже, что ключ не определен» – AnilRedshift

ответ

1

Я бы предложил использовать резервный механизм, который сначала обрабатывает совет от MDN, а затем возвращается к старым решениям. Но если вы используете JQuery, вы должны использовать provided methods, чтобы получить ключ-код

// jquery 
$(document.body).on('keyup', function(e) { 
    delete keys[e.which]; 
}); 

// vanilla 
document.body.addEventListener('keyup', function (e) { 
    delete keys[(e.key && e.keyCode.charCodeAt(0)) || e.which || e.keyCode]; 
}, true); 

Однако это верно лишь для печатаемых символов и нуждается в более глубокое исследование проблемы обычно.

+0

Почему? Я уже вижу эти параметры из документации. И почему этот порядок? Мне просто нужен код сканирования аппаратного обеспечения, чтобы заимствовать у меня опыт win32. – AnilRedshift