предотвращение дефолта не работает для keydown в Safari 5.0.4 - PullRequest
0 голосов
/ 30 марта 2011

У меня есть следующий код, который связывает Alt + b, чтобы что-то сделать:

(function(jQuery){
    $(document).ready(function() {
       $(document).bind('keydown', 'alt+b', function(event) {
        // do stuff
        event.preventDefault();
      });
    });
})( jQuery );

При использовании браузера Safari (v5.0.4) на ПК это вызывает меню для отображения (Закладки). Есть ли способ предотвратить такое поведение? В этом случае предотвратите работу с Chrome и Firefox. Я также пытался вернуть false, но это тоже не сработало.

Примечание: кажется, что мой код работает, пока я не сделал меню видимым в первый раз. После этого Alt + b вызывает отображение закладок, даже если меню скрыто.

Ответы [ 2 ]

0 голосов
/ 30 марта 2011

У меня нет вашей версии Safari (я не смог протестировать), но вы можете попробовать это http://jsfiddle.net/LnvGR/2/

(function(jQuery){
   var keys = {};
$(document).keydown(function (e) {
    keys[e.which] = true;

    var kValues = '';
      for (var i in keys) {
          if (!keys.hasOwnProperty(i)) continue;
          kValues += i;
      }

     if (kValues == "1866" || kValues == "6618")
     {
         e.preventDefault();
         return false;
     }
});

$(document).keyup(function (e) {
    delete keys[e.which];
});

})( jQuery );

Чтение всех ключей, затем проверка комбинации и вызовение protectDefault ();

0 голосов
/ 30 марта 2011

Попробуйте:

(function(jQuery){
    $(document).ready(function() {
       $(document).bind('keydown', function(e) {
        if(e.keyCode==66){
          // do stuff
          e.preventDefault();
        }
      });
    });
})( jQuery );

Протестировано в сафари, и оно не вызывает закладки.

...