preventDefault不适用于Safari 5.0.4中的keydown

时间:2011-03-30 08:05:40

标签: jquery safari keydown alt preventdefault

我有以下代码绑定Alt + b来执行某些操作:

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

在PC上使用Safari浏览器(v5.0.4)时,会触发显示的菜单(书签)。有没有办法防止这种行为?在这种情况下,preventDefault适用于Chrome和Firefox。我也尝试'返回false',但它也不起作用。

注意:似乎我的代码有效,直到我第一次看到菜单。之后,即使菜单被隐藏,Alt + b也会触发书签显示。

2 个答案:

答案 0 :(得分:0)

试试这个:

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

在safari中测试过,它不会触发书签。

答案 1 :(得分:0)

我没有你的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 );

读取所有键,然后检查组合并调用preventDefault();