Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Разное поведение браузеров на события клавиатуры (https://javascript.ru/forum/offtopic/30987-raznoe-povedenie-brauzerov-na-sobytiya-klaviatury.html)

dmitry111 22.08.2012 19:35

Разное поведение браузеров на события клавиатуры
 
Заметил такую штуку:

при разной раскладке клавиатуры (en или rus) браузеры реагируют на нажатия клавиш букв по разному.

Так, браузеры firefox, opera при сигнале с кириллицы отказываются принимать событие. И keyCode этих клавиш равен 0 в firefox и четырехзначному значению в opera!

А браузеры safari, chrome одинаково реагируют на сигналы как кириллицей, так и латиницей.

Браузер ie не тестил.


Кто может это объяснить?

Deff 22.08.2012 19:38

dmitry111,
Может нун тестировать код буквы и на латинице и на кирилице при событии?

dmitry111 22.08.2012 19:47

Нужно, но только firefox при русской раскладке выдает 0 на любой клавише :)

dmitry111 22.08.2012 19:49

Буду признателен, если скажете как ведет себя ie в этой ситуации?

Deff 22.08.2012 19:51

dmitry111,
А при немецкой ? (Раскладки вродь в языковых настройках менять нужно) :write: (Интересно - насколь они рассово-дискриминируют

dmitry111 22.08.2012 19:57

не ну firefox явно самый рассовонетерпимый :yes:

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

dmitry111 22.08.2012 20:06

Сейчас проверил, firefox выдает ноль для стран бывших СССР. :)
А вот например Польша, Литва, Латвия приравнивается к латинице.

B~Vladi 22.08.2012 20:20

Скинь тестовый код.

dmitry111 22.08.2012 20:35

код как код
<!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>

Aetae 22.08.2012 21:47

Там целый геморой.
В некоторых случаях надо использовать e.charCode.
И это ещё не всё, в разных браузерах и в разных операционках по разному воспринимается зажатие клавиши. Например в ff на убунте - зажатая клавиша вызывает событие 1 раз при нажатии, а в ff windows - постоянно через короткий интервал. Про другие браузеры не помню, но там тоже полный разброд.)


Часовой пояс GMT +3, время: 21:41.