0

我有以下代码绑定 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。我也尝试“返回错误”,但它也不起作用。

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

4

2 回答 2

0

I don't have your version of Safari (I couldn't test) but you can give this a try 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 );

Reading all keys, then checking for the combination and calling preventDefault();

于 2011-03-30T08:34:08.543 回答
0

尝试这个:

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

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

于 2011-03-30T08:23:56.650 回答