Opera, событие не возникает вновь при вдавленной кнопке.
код
jQuery(document).ready(function(){ jQuery(document).keydown(function(ev){ if ((ev.keyCode > 36) && (ev.keyCode < 41)) { nazata(ev.keyCode); //действия } }); }); Когда стрелку вдавливаешь, то событие должно повторяться. Так и работает во всех моих браузерах кроме оперы. Что делать? |
Цитата:
|
хм перетащил проверку стрелок на keypress , в опере стало окей.
Но в хроме стрелки не работают на keypress(это у меня записано, поэтому я их на keydown и проверял) |
С клавишами в браузерах всё плохо, по ним можно диссертацию писать. Причём с разными клавишами по разному плохо. Если говорить про стрелки, то при их залипании
* В IE и в Chrome повторяется keydown * В Опере повторяется keypress * В Firefox-е повторяются и keydown, и keypress. Вот и делай что хочешь. Получается надо оба ловить, но при этом в Firefrox-е одно из них игнорировать. По логике, правильное поведение здесь у IE и у Chrome. Firefox решил перестраховаться, но в целом тоже покатит. А Опера в своём репертуаре мудацкого браузера. |
Цитата:
|
не просто так события называются так как называются:
keydown - нажали клавишу, то-есть опустили, срабатывает событие что именно нажали клавишу keypress - от английского слова pressed (зажата) то-есть клавиша зажата, соответственно все повторы идут на это событие до тех пор пока клавиша не будет отжата. keyup - подняли клавишу, то-есть отпустили. Вся эта логика работает во всех языках в которых я программировал, а их более десяти как минимум. Поэтому Опера все же работает правильнее всех. |
А вот кстати еще удивляет по какой такой логике сделали разный порядок срабатывания:
mousedown → mouseup → click и keydown → keypress → keyup ---------- Помня что click последним возникает, сначала хотел написать, что логичнее было бы повторять keydown, а Opera как всегда, но потом посмотрел, как ведут себя браузеры… |
Цитата:
|
devote,
это всего лишь ваши фантазии. keypress должен срабатывать, когда введён какой-то символ, а не когда нажата клавиша. Поэтому нажатие стрелок не должно вызывать keypress вовсе, т.к. никакой символ при этом не вводится. Другими словами, keypress работает с символами, которые могут отличаться на одной и той же клавише в зависимости от раскладки или от shift/caps. http://learn.javascript.ru/keyboard-events keydown/keyup же работают с самими клавишами, независимо от раскладки. |
Цитата:
|
Часовой пояс GMT +3, время: 13:15. |