Javascript 键盘快捷键ctrl+;他不为我工作

Javascript 键盘快捷键ctrl+;他不为我工作,javascript,jquery,Javascript,Jquery,在下面的代码段中,Ctrl+Enter(event.which==13)正在工作。但是,Ctrl+R(event.which==9)不是 基于在的一些快速测试,您似乎想要event.which==82,而不是event.which==9。尽管大多数浏览器倾向于使用Ctrl+R刷新页面,但这可能不是处理您正在执行的任何操作的最佳方式。防止Ctrl+R刷新页面的跨浏览器解决方案: (适用于Firefox、Chrome、Safari和Opera) 通过简单地测试我们的navigator.userAge

在下面的代码段中,Ctrl+Enter(
event.which==13
)正在工作。但是,Ctrl+R(
event.which==9
)不是


基于在的一些快速测试,您似乎想要
event.which==82
,而不是
event.which==9
。尽管大多数浏览器倾向于使用Ctrl+R刷新页面,但这可能不是处理您正在执行的任何操作的最佳方式。

防止Ctrl+R刷新页面的跨浏览器解决方案:

(适用于Firefox、Chrome、Safari和Opera

通过简单地测试我们的
navigator.userAgent
,您可以决定使用哪个关键事件侦听器以及相应的
R
关键代码


如果需要将R和ENTER与Ctrl组合使用,则只需进行以下小调整:

(同样,所有浏览器:)


代码的问题在于
keyPress
侦听器使用了一组不同的keyCode。对于
按键
而言,
r
键为
114
,而对于
keyDown
而言,键为
82

另一个问题是浏览器的默认重新加载功能将覆盖您的功能,因为按键是在您释放按键后执行的。要解决此问题,请将
keypress
更改为
keydown

$(document).keydown(function(e){
    if(e.which === 82 && e.ctrlKey){    //keycode is 82 for keydown
        alert("Pressed!");
        e.preventDefault();             //stop browser from reloading
    }
});

PS:Firefox似乎忽略了
e.preventDefault
(根据W3C标准,它应该忽略这一点)。要支持所有浏览器,最好选择其他组合,或者使用
ctrl+alt+r

if(e.which === 82 && e.ctrlKey && e.altKey){


您正在测试一个tab
9==tab
我认为这种组合永远不会起作用,因为
Ctrl+R
是为“重新加载”保留的。不过不确定。而且
r
keyCode
不是
9
。哦,我在测试其他组合。也许我应该澄清一下。ctrl+(字符)组合不起作用。@ScottMagdalein-你试过键入代码114并在末尾添加
event.preventDefault()
?我正在使用我链接到的网站作为测试,上面写着82。但你可以在我的小提琴中看到它写着114。哦,是的,在JS
keypress
keydown
中使用了不同的键入代码集,这就是原因。应该是114。哇,我不知道
keypress
使用了一组不同的键码@德里克朕會功夫 你知道我在哪里能找到那张名单吗?@ScottMagdalein,我怀疑钥匙码可能与平台有关。。“或者不便于携带。”ScottMagdalein为您的问题找到了一个很好的解决方案。坐look@RokoC.Buljan-只有当他有一个组合时,这才是一个非常好的解决方案。@Derek朕會功夫 他不需要任何其他组合。如果你仔细阅读问题标题。OP把
altKey
ctrlKey
以及相关数字搞砸了。@RokoC.Buljan-你在他的代码中看到了Ctrl+Enter组合吗?@RokoC.Buljan-我想你应该得到我的支持:)@RokoC.Buljan-有点变化。谢谢。好吧,不过,我想我们现在有最好的东西了。我在几乎所有浏览器中测试了我的示例。无需混合使用
ALT
键story@RokoC.Buljan-在这种情况下,您的解决方案确实有效,但我个人认为这样做不利于进一步的维护。我可能同意您的看法,但现在除了这样做,别无选择。你对维护的确切含义是什么?@RokoC.Buljan-如果将来你想添加另一个组合,或者Firefox决定更改它,你必须重写代码,这看起来很麻烦。
var keyEv = navigator.userAgent.indexOf('Firefox')>-1?["keypress",114]:["keydown",82];
$(document)[keyEv[0]](function(e) {
  var k = e.which;
  if ( e.ctrlKey && k==keyEv[1] || k==13 ){ // no XBrowser issues with 13(Enter)
                                            // so go for it!
      e.preventDefault();      
      alert("Do something here");  
  }
});
$(document).keydown(function(e){
    if(e.which === 82 && e.ctrlKey){    //keycode is 82 for keydown
        alert("Pressed!");
        e.preventDefault();             //stop browser from reloading
    }
});
if(e.which === 82 && e.ctrlKey && e.altKey){