Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 17.04.2012, 13:25
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Kolyaj
это всего лишь ваши фантазии. keypress должен срабатывать, когда введён какой-то символ, а не когда нажата клавиша.
То-есть по вашему я всю жизнь программирую и событие на всех языках под названием keypress оказывается везде совсем не keypress а как тоесть это правильнее тогда по вашему нужно было назвать keycharinput тогда уж. KeyPress и в африке keypress про буквы в названии события не слова нет, а значит ввод тут совершенно не причем. И к вашему сведению стрелки тоже делаю ввод данных в бувер клавиатуры, просто программы их обрабатывают так как им надо. И не надо ляля. Keypress четко своим названием говорит что именно press а не input
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #12 (permalink)  
Старый 17.04.2012, 13:33
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Можно, конечно, встать в позу, и кричать, что всю жизнь на Си пишу, и там вот так. А можно пойти и почитать, как оно не в Си, а в JavaScript.
Ещё раз цитата из ссылки выше
Цитата:
Возникает сразу после keydown, если нажата символьная клавиша, т.е. нажатие приводит к появлению символа.
Нажатие на стрелки к появлению символа не приводит.
Ответить с цитированием
  #13 (permalink)  
Старый 17.04.2012, 13:41
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

мне эта цитата ни о чем не говорит, ибо я больше доверяю спецификациям.. Хотя и в них не всегда все найдешь. А то что в JS принято так как вы говорите, то это принято кем? Простыми JS программистами? А где оф. документ об этом говорящий? Нету? Ну еще бы, проще же для себя сделать выводы самому. А может вовсе вывод сделан от принятых решений в браузере допотопных времен. Я лишь знаю одно, что мои привычным требованиям в программировании, опера меня вполне устраивает, потому что я получаю то что ожидаю. А не то что где-то кто-то решил что в JS оно будет так. Флаг им в руки.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #14 (permalink)  
Старый 17.04.2012, 13:47
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Хотя да вы правы, в JS оно так, и спецификацию нашел: http://dev.w3.org/2006/webapi/DOM-Le...-type-keypress но странно конечно что они решили сделать в JS именно так.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #15 (permalink)  
Старый 17.04.2012, 13:52
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

НО! Есть приписка в той же спецификации:
Цитата:
⚠Warning! the keypress event type is defined in this specification for reference and completeness, but this specification deprecates the use of this event type. When in editing contexts, authors can subscribe to the "input" event defined in [HTML5] instead.
Говорящая о том что данное поведение в последующем может измениться, так как в спецификации HTML5 появилось событие oninput которое и нужно использовать для отлова вводимых клавиш. Поэтому Опера вполне норм работает с этим событием, так же и событие oninput в Опере тоже есть, которое и ловит ввод данных.

Так что я уверен что в будущем полюбившееся вам поведение измениться у события keypress
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #16 (permalink)  
Старый 17.04.2012, 15:57
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

спс за ответы, пока я подумал не усложнять мой код чисто из-за оперы, т.к. для своего сайта скрипт.
Ответить с цитированием
  #17 (permalink)  
Старый 19.04.2012, 16:15
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

переделал все таки еще и под оперу, глянул что в рунете это оч. популярный браузер. Даже не знаю почему.
Может кому пригодится, кроссбраузерная обработка стрелок и пробела:
var agt = navigator.userAgent.toLowerCase();
var is_opera = ((agt.indexOf("opera") != -1)||(window.opera));
jQuery(document).ready(function(){
  jQuery(document).keypress(function(ev){
     if (ev.which == 32)  {
       nazata(32);	
       return false;
     }  
     if (is_opera) {
       if ((ev.keyCode > 36) && (ev.keyCode < 41)) {
		   nazata(ev.keyCode);	 								 
		   return false;
	   }     
     }
	 
  });			
  jQuery(document).keydown(function(ev){ 
     if (is_opera) return false;
     if ((ev.keyCode > 36) && (ev.keyCode < 41)) {
		 nazata(ev.keyCode);	 								 
		 return false;
	 }
  });	
});
Ответить с цитированием
  #18 (permalink)  
Старый 19.04.2012, 17:15
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от micscr
var is_opera = ((agt.indexOf("opera") != -1)||(window.opera));
не лучший вариант юзать юзерагент...

раз уж пошла такая пьянка вот мой вариант:
<!DOCTYPE html>
<html>
	<head>
		<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
		<script type="text/javascript">

			var keypressed = false, count = 0;

			function _log( str ) {
				document.body.innerHTML = "(" + count++ + ") " + str + ( keypressed ? ", вы продолжаете ee держать!" : "" );
			}

			$(document).bind( "keydown keypress", function( e ) {

				var keystring = {
					"37": "стрелка влево",
					"38": "стрелка вверх",
					"39": "стрелка вправо",
					"40": "стрелка вниз"
				}

				var timeStamp = (new Date().getTime());

				if ( !document.timeStamp || ( ( document.timeStamp + 10 ) < timeStamp ) ) {
					if ( e.which === 32 ) {
						_log( "Нажат пробел" );
					} else if ( e.keyCode > 36 && e.keyCode < 41 ) {
						_log( "Нажата функциональная клавиша: " + ( keystring[ e.keyCode ] || "код клавиши " + e.keyCode ) );
					} else {
						_log( "Нажата клавиша: " + ( keystring[ e.keyCode ] || "код клавиши " + e.keyCode ) );
					}
					document.timeStamp = timeStamp;
				}

				keypressed = true;

				return false;

			}).keyup(function(){

				count = 0;
				keypressed = false;

				_log( "Отпустили клавиши" );
			});
		</script>
	</head>
	<body>
	</body>
</html>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как при быстром многократном клике по кнопке обрабатывать только первый клик battrack jQuery 3 22.03.2012 10:47
Как правильно подавить событие при подключении своего обработчика? Маэстро Firefox/Mozilla 2 03.09.2011 11:46
Не срабатывают события из iframe при перетаскивании в него курсора в Opera jaguar954 Events/DOM/Window 1 01.08.2011 12:17
Событие mouseout при наведении мыши на пункт меню WalterScott Events/DOM/Window 2 12.05.2009 22:05
какое событие возникает во время формирования html IT-AleX Events/DOM/Window 2 20.02.2009 16:13