Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Chrome + перехват нажатия клавишь. (https://javascript.ru/forum/misc/12287-chrome-perekhvat-nazhatiya-klavish.html)

MadGest 10.10.2010 20:32

Chrome + перехват нажатия клавишь.
 
Ловлю эвент
document.onkeypress = function(event){control.HandleEvent(event);}

var keyCode = (event.charCode) ? event.charCode : event.keyCode;


В Хроме не отлавливаются Home, End, Del, BS, стрелки. Помогите советом.

Octane 10.10.2010 21:04

Используйте onkeyup и проверку keyCode

MadGest 11.10.2010 09:37

А в чем собственно проблема keypress может кто-нибудь пояснить?

Kolyaj 11.10.2010 09:50

keypress сигнализирует о вводе символа, а не о нажатии клавиши.

MadGest 11.10.2010 09:54

switch (event.type)
	{
		case "click": this.HandleClick(event); break;
		case "keypress": this.HandleKeyPress(event); break;
		case "keyup":  this.HandleKeyDown(event); break;
	}
	return false;


события Press и up дублируются и происходит последовательный вызов. Так как в index.html конструкция вида.

document.onkeypress = function(event){control.HandleEvent(event);}
document.onkeydown = function(event){control.HandleEvent(event);}
document.onkeyup = function(event){control.HandleEvent(event);}
document.onclick  = function(event){control.HandleEvent(event);}


Поскажите как решить проблему?

Kolyaj 11.10.2010 10:21

Разумеется они могут дублироваться, т.к. нажатие некоторых клавиш вводит символ. Плюс к этому реализация в браузерах, как правило, неаккуратная, keypress может вызываться и при нажатии функциональных клавиш.

MadGest 11.10.2010 10:26

И как с этим быть! Так как мне очень важно различать эти два события.

Kolyaj 11.10.2010 10:37

В каком смысле различать?

Если нужно получить вводимый символ -- keypress.
Если нужно получить нажатую клавишу -- keydown/keypress.


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