Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Бардак с event.keyCode и event.charCode в браузерах (https://javascript.ru/forum/events/12196-bardak-s-event-keycode-i-event-charcode-v-brauzerakh.html)

Casufi 05.10.2010 15:48

Бардак с event.keyCode и event.charCode в браузерах
 
В своем скрипте я в событии onKeyPress пытаюсь отследить ввод одинарной или двойной кавычки. И вот чего мне возвращают разные браузеры
FireFox - одинарная кавычка event.keyCode = 0; event.charCode=39
Chrome - одинарная кавычка event.keyCode = 39; event.charCode=39
IE6 - одинарная кавычка event.keyCode = 39; event.charCode undefined

И это небыло бы проблемой если бы у FireFox event.keyCode = 39 не обозначал стрелку влево.

Может есть библиотека которая обходит эти разногласия ?

Kolyaj 05.10.2010 15:55

Цитата:

Сообщение от Casufi
И это небыло бы проблемой если бы у FireFox event.keyCode = 39 не обозначал стрелку влево.

Не путайте код символа с кодом клавиши.

Casufi 05.10.2010 16:02

А каким же тогда чудным образом вернуть код символа в IE 6?

Kolyaj 05.10.2010 16:09

keyCode у события keypress -- код символа.
keyCode у события keydown -- код клавиши.

Как-то так.

Casufi 05.10.2010 16:23

Цитата:

Сообщение от Kolyaj (Сообщение 73219)
keyCode у события keypress -- код символа.
keyCode у события keydown -- код клавиши.
Как-то так.

Вернулись в начало. Вопрос вот в чем
1) Одинаково ли в этом случае ведут себя IE6, IE7, IE8
2) Как поведут себя разные версии Opera?
3) Существует ли либа которая позволяет выбрать правильный метод определения кода введенного символа?
Сейчас я вышел из положения тупым определением версии броузера и ветвлением алгоритма, а ведь не я первый сталкиваюсь с подобной проблемой (и пока что не я последний к сожалению).

Kolyaj 05.10.2010 16:50

Я такой либы не знаю, но я и не искал. Скорее всего есть.

Цитата:

Сообщение от Casufi
2) Как поведут себя разные версии Opera?

Разные версии Opera могут себя вести абсолютно непредсказуемо, это фирменная фича Оперы. У неё при некоторых сочетаниях клавиш ещё коды могут совпадать.


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