Цитата:
|
Можно, конечно, встать в позу, и кричать, что всю жизнь на Си пишу, и там вот так. А можно пойти и почитать, как оно не в Си, а в JavaScript.
Ещё раз цитата из ссылки выше Цитата:
|
мне эта цитата ни о чем не говорит, ибо я больше доверяю спецификациям.. Хотя и в них не всегда все найдешь. А то что в JS принято так как вы говорите, то это принято кем? Простыми JS программистами? А где оф. документ об этом говорящий? Нету? Ну еще бы, проще же для себя сделать выводы самому. А может вовсе вывод сделан от принятых решений в браузере допотопных времен. Я лишь знаю одно, что мои привычным требованиям в программировании, опера меня вполне устраивает, потому что я получаю то что ожидаю. А не то что где-то кто-то решил что в JS оно будет так. Флаг им в руки.
|
Хотя да вы правы, в JS оно так, и спецификацию нашел: http://dev.w3.org/2006/webapi/DOM-Le...-type-keypress но странно конечно что они решили сделать в JS именно так.
|
НО! Есть приписка в той же спецификации:
Цитата:
Так что я уверен что в будущем полюбившееся вам поведение измениться у события keypress |
спс за ответы, пока я подумал не усложнять мой код чисто из-за оперы, т.к. для своего сайта скрипт.
|
переделал все таки еще и под оперу, глянул что в рунете это оч. популярный браузер. Даже не знаю почему.
Может кому пригодится, кроссбраузерная обработка стрелок и пробела: 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; } }); }); |
Цитата:
раз уж пошла такая пьянка вот мой вариант: <!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> |
Часовой пояс GMT +3, время: 17:03. |