Измените function()
на function(e)
, и нажатая клавиша находится в e.key
(после фрагмента запуска нажмите на белый прямоугольник под кнопкой запуска и нажмите клавиши)
var shouldHandleKeyDown = true;
document.onkeydown = function(e) {
if (!shouldHandleKeyDown) return;
shouldHandleKeyDown = false;
console.log(e.key);
// HANDLE KEY DOWN HERE
}
document.onkeyup = function(){
shouldHandleKeyDown = true;
}
Попробуйте это:
var keys = [];
for (var key in dictionary) {
if (dictionary.hasOwnProperty(key)) {
keys.push(key);
}
}
hasOwnProperty
необходим, потому что это возможно к клавишам Insert в объект прототипа dictionary
. Но Вы обычно не хотите те ключи, включенные в Ваш список.
, Например, если Вы делаете это:
Object.prototype.c = 3;
var dictionary = {a: 1, b: 2};
и затем делают for...in
цикл более чем dictionary
, Вы доберетесь a
и b
, но Вы также доберетесь c
.
for (var key in dictionary) {
// do something with key
}
Это для.. в операторе .
Просто небольшое примечание, будьте осторожны при использовании for..in, если вы используете библиотеку (jQuery, prototype и т. Д.) .), так как большинство из них добавляют методы к созданным объектам (включая словари).
Это будет означать, что когда вы перебираете их, имена методов будут отображаться как ключи. Если вы используете библиотеку, просмотрите документацию и найдите перечислимый раздел, где вы найдете правильные методы для итерации ваших объектов.