Стрелка ключевых событий с JQuery не работает ни в чем, кроме FF! - PullRequest
1 голос
/ 22 февраля 2011

Я создал сайт портфолио и, просматривая изображения, хочу, чтобы пользователи могли перемещаться с помощью клавиш со стрелками. У меня есть следующий код, который отлично работает в FF, но не Chrome, Safari или IE.

        $(document).keypress(function (evt) {
            if (evt.keyCode == 39) { 
              evt.preventDefault(); 
              $.scrollTo('+=564px', 800, { axis:'x' }); 
            } else if (evt.keyCode == 37) { 
              evt.preventDefault();
              $.scrollTo('-=564px', 800, { axis:'x' });
            }
  });

У меня установлен и работает плагин scrollTo, а также действительный файл jQuery, так что это не проблема. Может кто-нибудь сказать мне, почему это не может работать в других браузерах?

Живой пример здесь

Помощь всегда ценится!

Ответы [ 2 ]

6 голосов
/ 22 февраля 2011

Попробуйте:

$(document).bind('keydown',function(evt) {

});

вместо

$(document).keypress(function(evt) {

});

Это связано с тем, что IE обрабатывает KeyPress иначе, чем FireFox.

EDIT какВы были так хороши в получении достойного ответа:

Я бы также изменил ваше утверждение на switch:

$(document).bind('keydown',function(evt) {
        switch(evt.keyCode) {
        case 65:
                    alert("you pressed key 65");
                    break;
                }
});
3 голосов
/ 22 февраля 2011

Если вы хотите сделать этот кросс-браузер, вы также должны знать, что коды клавиш могут не совпадать в разных браузерах. jQuery предлагает свойство event.which, которое должно нормализовать различия между браузерами.

http://api.jquery.com/event.which

Из документов:

event.which нормализует event.keyCode и event.charCode. Рекомендуется смотреть event.which для ввода с клавиатуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...