Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.10.2010, 20:32
Кандидат Javascript-наук
Отправить личное сообщение для MadGest Посмотреть профиль Найти все сообщения от MadGest
 
Регистрация: 12.07.2010
Сообщений: 123

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

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


В Хроме не отлавливаются Home, End, Del, BS, стрелки. Помогите советом.
Ответить с цитированием
  #2 (permalink)  
Старый 10.10.2010, 21:04
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Используйте onkeyup и проверку keyCode
Ответить с цитированием
  #3 (permalink)  
Старый 11.10.2010, 09:37
Кандидат Javascript-наук
Отправить личное сообщение для MadGest Посмотреть профиль Найти все сообщения от MadGest
 
Регистрация: 12.07.2010
Сообщений: 123

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

Последний раз редактировалось MadGest, 11.10.2010 в 09:41.
Ответить с цитированием
  #4 (permalink)  
Старый 11.10.2010, 09:50
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

keypress сигнализирует о вводе символа, а не о нажатии клавиши.
Ответить с цитированием
  #5 (permalink)  
Старый 11.10.2010, 09:54
Кандидат Javascript-наук
Отправить личное сообщение для MadGest Посмотреть профиль Найти все сообщения от MadGest
 
Регистрация: 12.07.2010
Сообщений: 123

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);}


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

Последний раз редактировалось MadGest, 11.10.2010 в 10:20.
Ответить с цитированием
  #6 (permalink)  
Старый 11.10.2010, 10:21
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Разумеется они могут дублироваться, т.к. нажатие некоторых клавиш вводит символ. Плюс к этому реализация в браузерах, как правило, неаккуратная, keypress может вызываться и при нажатии функциональных клавиш.
Ответить с цитированием
  #7 (permalink)  
Старый 11.10.2010, 10:26
Кандидат Javascript-наук
Отправить личное сообщение для MadGest Посмотреть профиль Найти все сообщения от MadGest
 
Регистрация: 12.07.2010
Сообщений: 123

И как с этим быть! Так как мне очень важно различать эти два события.
Ответить с цитированием
  #8 (permalink)  
Старый 11.10.2010, 10:37
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
тег <audio> в Opera, Chrome, Firefox Magneto Javascript под браузер 12 25.11.2010 15:12
Google Chrome перерисовка страницы во время выполнения скрипта Dekart Javascript под браузер 0 08.06.2010 08:35
Перехват сочетания нажатия клавиш Ctrl+Tab pauluss Events/DOM/Window 1 23.03.2010 19:32
Сохранение результата ajax запроса после нажатия 'back' gregOlsen AJAX и COMET 5 18.11.2009 12:23
Перехват нажатия ctrl+space demi AJAX и COMET 6 11.03.2009 11:03