Событие OnkeyUp иногда пропускается

У меня есть веб-приложение HTML5, которое работает как экран KVM с использованием WebSockets. В основном виртуальный монитор для моей удаленной машины. Проблема, которую я вижу, заключается в том, что когда я начинаю быстро (или непрерывно) печатать, один из символов печатается несколько раз.

Код таков, что нажатая / отпущенная клавиша передается в удаленную систему как протокол USB HID. Итак, согласно Протокол USB-HID,

When the OS receives a "press key" report, it writes the letter or uses it as a command as explained above. It will keep performing the same action, again and again, until it receives a "release key" report. When you press the letter 'a' on a USB keyboard, the following report will be sent over the USB interrupt pipe:

'a' report: [0, 0, 4, 0, 0, 0, 0, 0] This '4' value is the Keycode for the letter 'a', as described in USB HID Usage Tables (Section 10: Keyboard/Keypad Page). That document defines the report formats for all standardized HIDs.

After releasing the key, the following report will be sent:

null report: [0, 0, 0, 0, 0, 0, 0, 0] '4' is replaced with '0'; an array of zeros means nothing is being pressed.

Соответственно, веб-приложение HTML5 отправляет пакет для нажатия клавиши и отдельный пакет для отпускания клавиши. Он использует onKeyDown() для отправки события нажатия клавиши и onKeyUp() для отправки события отпускания клавиши.

Иногда событие onKeyUp() не принимается, что не позволяет приложению отправить событие отпускания клавиши, и, следовательно, нажатый символ продолжает печататься.

Итак, проблема в отсутствии события onKeyUp(). Как я могу гарантировать, что этого не произойдет? В чем могут быть причины? Я запускаю это в Chrome на Win 7. Может ли быть альтернативное решение для достижения вышеуказанной задачи?

Насколько я знаю, однозначного ответа нет, поскольку клавиатура фактически не регистрирует это как «нажатие клавиши» или любую другую ситуацию, в которой она не регистрируется. Если вы снова нажмете кнопку, это должно исправить.

Jared Bledsoe 19.07.2018 17:35

@JaredBledsoe да, это решает проблему, если я снова нажимаю клавишу, реальная проблема иногда возникает, когда необходимо выполнить некоторые настройки / установки, и на этих экранах, если клавиша «Enter» повторяется, это не позволяет пользователю установить их конфигурации. В этих сценариях проблема становится серьезной.

RamBo 19.07.2018 17:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
186
0

Другие вопросы по теме