Разное поведение браузеров на события клавиатуры
Заметил такую штуку:
при разной раскладке клавиатуры (en или rus) браузеры реагируют на нажатия клавиш букв по разному. Так, браузеры firefox, opera при сигнале с кириллицы отказываются принимать событие. И keyCode этих клавиш равен 0 в firefox и четырехзначному значению в opera! А браузеры safari, chrome одинаково реагируют на сигналы как кириллицей, так и латиницей. Браузер ie не тестил. Кто может это объяснить? |
dmitry111,
Может нун тестировать код буквы и на латинице и на кирилице при событии? |
Нужно, но только firefox при русской раскладке выдает 0 на любой клавише :)
|
Буду признателен, если скажете как ведет себя ie в этой ситуации?
|
dmitry111,
А при немецкой ? (Раскладки вродь в языковых настройках менять нужно) :write: (Интересно - насколь они рассово-дискриминируют |
не ну firefox явно самый рассовонетерпимый :yes:
Думаю логически правильный подход у opera, ну а с практической точки зрения webkit конечно же наиболее удобен. Вряд ли встретится такая клавиатура, на которой не будет энглиша. |
Сейчас проверил, firefox выдает ноль для стран бывших СССР. :)
А вот например Польша, Литва, Латвия приравнивается к латинице. |
Скинь тестовый код.
|
код как код
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>ууу</title> <script type="text/javascript"> function xxx(e) { alert(e.keyCode); } window.addEventListener("keydown", xxx, false); </script> </head> <body> </body> </html> |
Там целый геморой.
В некоторых случаях надо использовать e.charCode. И это ещё не всё, в разных браузерах и в разных операционках по разному воспринимается зажатие клавиши. Например в ff на убунте - зажатая клавиша вызывает событие 1 раз при нажатии, а в ff windows - постоянно через короткий интервал. Про другие браузеры не помню, но там тоже полный разброд.) |
dmitry111, события клавиатуры
|
Цитата:
|
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>ууу</title> </head> <body> <script type="text/javascript"> function xxx(e) { alert([e.charCode, e.which]); } document.addEventListener("keypress", xxx, false); </script> </body> </html> |
Цитата:
Кстати этаже проблема возникает также в самом первом примере тут: http://learn.javascript.ru/keyboard-...n-%D0%B8-keyup хотя, там об этом ничего не сказано! |
Gozar,
ваш код работает. Но речь о keydown и keyCode |
Думаю проблема в свойстве keyCode.
Если его использовать с событием keydown - выдает - 0 на кириллицу, если с событием keypress - выдает 0 на кириллицу и латиницу |
Цитата:
Цитата:
Цитата:
ps: Можешь обращаться ко мне на ты. ps2: Напиши свой браузер, в котором не будет проблем. ;) |
Gozar,
мне понравился keyCode своей универсальностью. Все равно какая буква - заглавная, строчная - код один и тотже. Это же удобно и не заставляет лишний раз напрягать извилины ради пустяковых задач. А charCode выдает разную цифру. Из-за проблем в opera keyCode напоминает charCode, а из-за проблем в firefox (14.0.1 под os x) вообще теряет свою актуальность как свойство. В коде написанном вами у меня не работают клавиши F1, F2, F3.... Так что он тоже не совершенен. Вывод: чтобы приложение работало везде (при любой раскладке) и при этом не требовало дополнительных "региональных" костылей, безопасными клавишами, независимо от использования свойств charCode, keyCode, являются клавиши 0 - 9 на основной клавиатуре и больше никакие :) |
dmitry111,
Не нужно придумывать проблему там где её нет. Цитата:
Цитата:
Цитата:
|
dmitry111, я тоже при разработке своего плагина столкнулся с этой проблемой (мне нужно было ограничить ввод с клавиатуры). Опера и ФФ под убунтой тоже выдают нули, нормально работает только Хром как в винде так и в убунте. Решил путем переделки условий в коде.
|
хотя да, возможно Gozar прав. Эта не проблема.
Это типичная непродуманная хрень, которая в каждом браузере работает по разному. И делает код на чистом js чуть длиннее. Чтобы понять как все это работает в разных браузерах мне потребовалось пару часов.. И проблемы действительно не стало Примерно столько же времени мне потребовалось чтоб полностью освоить canvas!!! Чувствуете разницу? Вот такие вот пироги :-/ |
Цитата:
|
Хочу пирогов. =(
|
Цитата:
|
Цитата:
Хочу настоящих пирогов с мясом, как когда-то делала бабушка. =( |
Потестил я этот код - работает нормально и в Опере и в Firfox при включённой русской раскладке. Так что у Вас, наверно, клава глючит.
|
Цитата:
Хотя это можно еще исправить))) |
Часовой пояс GMT +3, время: 14:37. |