Работая над простой игрой, я заметил, что когда у меня одновременно нажаты шесть клавиш на клавиатуре, перехват событий keydown и keyup в документе веб-приложения становится непредсказуемым. В следующем фрагменте кода перечисленные клавиши перестают отображаться после того, как шесть клавиш, а иногда и меньше, удерживаются нажатыми.
<!DOCTYPE html>
<html>
<head>
<title>Keyboard test</title>
</head>
<body>
<div id="target"></div>
<script>
var target = document.getElementById('target');
var keyInventory = {};
var REFRESH_RATE = 1000 / 60;
document.addEventListener('keyup', function(e) {
keyInventory['Key code ' + e.keyCode] = false;
});
document.addEventListener('keydown', function(e) {
keyInventory['Key code ' + e.keyCode] = true;
});
setInterval(function() {
target.innerHTML = JSON.stringify(keyInventory).replace(/,/g, '<br />');
}, REFRESH_RATE);
</script>
</body>
</html>
Браузер блокирует некоторые комбинации или браузер рисует линию на шести с событиями «keyup» и «keydown»? Есть ли какое-то поведение по умолчанию, которое необходимо предотвратить? Он одинаков для всех браузеров? Есть ли способ разрешить регистрацию более шести любых комбинаций клавиш?