JQuery клавиатура перерывы в навигации в Firefox - PullRequest
2 голосов
/ 30 сентября 2010

Следующий код показывает div для события нажатия клавиши '?'(191).Отлично работает с Google Chrome, но отказывается работать с Firefox.Любые идеи?

$(document).keyup(function (e) {
  if(e.which == 16) isShift=false; }).keydown(function (e) {

  if(e.which == 16) isShift=true;

  if(e.which == 191 && isShift == true) {
    if ($('#keyboard-shortcut-menu').css('display') == 'none') {
      $('#keyboard-shortcut-menu').show();
    } else {
      $('#keyboard-shortcut-menu').hide();
    }

  return false;
}

ОБНОВЛЕНИЕ: понял это.Firefox захватывает «?»char как значение 0Проверьте мой ответ ниже.

Ответы [ 4 ]

2 голосов
/ 30 сентября 2010

попробуйте с

e.keyCode == XX

о, и вы можете использовать e.shiftKey, чтобы проверить, нажата ли клавиша "Shift"

$(document).keypress(function(e){
  if(e.keyCode==191 && e.shiftKey)
    $('#keyboard-shortcut-menu').toggle();
  return false;
});
1 голос
/ 30 сентября 2010

я думаю, что вы пропустили; или} потому что это работает в FF:

$(function(){
    $(document).keyup(function (e) {
          if(e.which == 16) isShift=false;
    }).keydown(function (e) {

          if(e.which == 16) isShift=true;

          if(e.which == 191 && isShift == true) {
                if ($('#keyboard-shortcut-menu').css('display') == 'none') {
                      $('#keyboard-shortcut-menu').show();
                }
                  else {
                      $('#keyboard-shortcut-menu').hide();
                }

              return false;
            }
      });
  });

попробуйте js fiddle здесь: http://jsfiddle.net/q3d6S/1/

0 голосов
/ 30 сентября 2010

Хорошо, я понял. Я запустил этот скрипт на консоли Firefox:

$(document).keydown(function(e) {
  console.log(e.which);
});

Кажется, Firefox захватывает '?' char как значение 0, а Google Chrome фиксирует его как 191.

Решил, добавив условный код:

if((e.which == 191 && isShift == true) || (e.which == 0 && isShift == true))

Спасибо за все советы по рефакторингу.

0 голосов
/ 30 сентября 2010

Попробуйте это ( демо ):

$(document).keyup(function(e){
    if (e.which == 191 && e.shiftKey == true) {
        $('#keyboard-shortcut-menu').toggle();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...