2011-03-30 57 views
0

我有下面的代码结合Alt + B键做一些事情:的preventDefault不是在Safari工作的keydown 5.0.4

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

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

注意:似乎我的代码工作,直到我第一次使菜单可见。之后Alt + b触发书签显示即使菜单被隐藏。

+0

嗨@jobzer,[我的答案](http://stackoverflow.com/questions/5483591/preventdefault-not-working-for-keydown-in-safari-5-0-4#answer-5483804)作品PC上的Safari。 – Alex 2011-03-30 08:47:02

+0

@Alex,似乎如果我打开Safari,它将工作,直到我用Alt打开菜单。之后Alt + b触发书签显示即使菜单被隐藏。 – jobzer 2011-03-30 18:52:20

+0

@jobzer你有没有找到解决方案? – jalf 2013-05-24 09:32:43

回答

0

试试这个:

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

经测试,在Safari浏览器,并且它不会触发书签。

+0

谢谢你的回复。您是否使用Safari v5.0.4 for Windows进行过测试?它不适合我。 – jobzer 2011-03-30 09:04:02

+0

哦....是的,让我再试一次。 – Alex 2011-03-30 09:06:30

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();

+0

谢谢,我测试了它,但不幸的是它并没有解决我的问题。 – jobzer 2011-03-30 09:31:44