2

В последнее время я бег в этот вопрос в моем окне машины , на которой , если я удерживая любую клавишу, последовательность ключевых событий , является key up и key down несколько раз.

На этом ключевом тестовом веб-сайте, если я удерживаю клавишу TAB, я получаю:

keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0        
keydown  keyCode=9         which=9         charCode=0        
keyup    keyCode=9         which=9         charCode=0

Я почти уверен, что я не должен видеть несколько событий key up . В идеале я должен видеть несколько событий key down и, в конце концов, одно событие key up .

Я попытался изменить свою клавиатуру, и это не помогает. Все мои настройки клавиатуры Windows кажутся нормальными (никакие липкие / ключи фильтра не установлены).

У меня заканчиваются идеи, как найти причину этой проблемы.

Любая помощь будет принята с благодарностью.

Благодарю.

1 ответ1

0

Ваша проблема не в Windows, а в том, как в вашем веб-браузере реализована обработка клавиатуры.

Например, в Internet Explorer мы получаем:

keydown  keyCode=9         which=9         charCode=0
keydown  keyCode=9         which=9         charCode=0
keydown  keyCode=9         which=9         charCode=0
keydown  keyCode=9         which=9         charCode=0
keydown  keyCode=9         which=9         charCode=0
keyup    keyCode=9         which=9         charCode=0

В то время как в Firefox мы получаем это:

keydown  keyCode=9         which=9         charCode=0
keypress keyCode=9         which=0         charCode=0
keydown  keyCode=9         which=9         charCode=0
keypress keyCode=9         which=0         charCode=0
keydown  keyCode=9         which=9         charCode=0
keypress keyCode=9         which=0         charCode=0
keyup    keyCode=9         which=9         charCode=0

Вы можете найти эту ссылку полезной. В частности, посмотрите на раздел 3.2.Классические значения, возвращаемые в событиях персонажа. Единственная проблема в том, что эта ссылка кажется ужасно устаревшей. Но ключевой принцип есть. Разные браузеры делают вещи по-разному:

Когда события нажатия клавиш генерируются для специальных клавиш, браузер должен возвращать не-ASCII-значение, чтобы указать, какие клавиши были нажаты. Мы увидим, что разные браузеры делают это по-разному.

РЕДАКТИРОВАТЬ: более актуальный справочник.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .