Keydown для специальных символов, таких как öüä, срабатывает 2 раза и выдает символ без '¨ - PullRequest
2 голосов
/ 21 марта 2012

У меня очень странная проблема со специальными клавишами в Safari на Mac.

Контекст немного сложен для объяснения, поэтому я просто опишу проблему и надеюсь, что у кого-то есть идея или предположение, чтобыНаправьте меня в правильном направлении.

Когда я нажимаю символ, например ö:

  • В текстовом поле появляется только o

  • слушатель нажатия клавиш выполняется 2 раза.Один раз с тем же кодом клавиши, что и o (в случае ö), и снова с кодом клавиши 0.

  • Я подключил прослушиватель как клавиш, так и клавиш.Выполняется только нажатие клавиши (для «обычных» букв, таких как o, также выполняется нажатие клавиши).

Любые идеи .. ??Заранее спасибо.

Хорошо, вот часть контекста, чтобы дать некоторое понимание:

  • Не появляется на всех Mac.

  • Появляется при использовании flash с iframe, содержащим редактор.Я прикрепил слушателей как ко всей странице, так и к редактору, чтобы посмотреть, что происходит.Проблема возникает при вводе во флэш-текстовое поле.Слушатель javascript на странице реагирует и имеет поведение, которое я описал.

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

1 Ответ

1 голос
/ 21 марта 2012

Дублированные события могут быть причудой браузера, но в любом случае нельзя ожидать, что Keydown даст вам фактический символ, который будет введен - код, который он предоставляет, просто идентифицирует клавишу на клавиатуре. Какой символ (если он есть) будет введен в результате, зависит от раскладки клавиатуры, других комбинаций клавиш (например, Shift или AltGr) и даже предыдущих нажатий клавиш (в случае «мертвых клавиш»).

Об этом много информации на http://unixpapa.com/js/key.html

...