2016-08-06 2 views
1

Некоторые клавиши запускают как onKeyDown, так и события onKeyPress, такие как A, а некоторые клавиши только стреляют поKeyDown, например SHIFT. Как я могу проверить, что onKeyPress не уволил за конкретный ключ? Мне нужно обнаружить его, как только нажата клавиша, поэтому я не могу использовать onKeyUp из-за задержки.Как я могу проверить, что onKeyPress НЕ запускается после onKeyDown?

+0

раствор из в верхней части моей головы используйте var для отслеживания события onkeyPress, затем используйте setTimeout с задержкой 0, чтобы вставить новое событие в таблицу событий, которая будет выполняться после завершения всех событий (в этот момент вы можете проверить, запущены ли оба из них или только один) – sarepta

ответ

1

В этом случае вы можете использовать onKeyUp, поскольку onKeyPress запускается после onKeyDown и до onKeyUp. Вы можете хранить ли OnKeyPress был уволен за ключом, как это:

var keyPressedFired = false; 
 

 
document.addEventListener("keypress", function(e) { 
 
    keyPressedFired = true; 
 
}); 
 

 
document.addEventListener("keyup", function(e) { 
 
    if (!keyPressedFired) { 
 
     alert('KeyPress not fired this key'); 
 
    } 
 

 
    keyPressedFired = false; 
 
});

Выполнить фрагмент кода, нажмите на белую часть ниже ее и нажмите SHIFT

+0

Удерживайте 'A' n удерживайте нажатой кнопку 'SHIFT'. Выпустите 'SHIFT', затем отпустите' A'. Появляется сообщение о том, что «KeyPress не запускал этот ключ», который является неправильным. –

Смежные вопросы