使用JQuery在Safari中捕获“Command + R”

我需要拦截Safari中的浏览器重新加载function(我知道这通常不是应该做的事情,但在我的情况下,这是有道理的)。

对于Windows我只是这样做:

$(document).keydown(function(event) { if ( event.which == 116 ) { restart(); return false; } }); 

我是否需要使用JQuery插件同时捕获两个密钥,或者这已经以某种forms在JQuery中实现了?

另外,Mac下的键码是否与Windows下的键码相同? (“Command”是键码“17”,“r”是“19”?)或者命令键是“55”而“r”是“15”?

(使用此来源: http : //boredzo.org/blog/archives/2007-05-22/virtual-key-codes

有一个Jquery插件可以捕获键盘事件,最好的部分是它允许你用它们的名字来处理关键事件。 就像你想要捕获CTRL + R然后你不必担心密钥代码,插件将自己处理。

在这里查看: https : //keithamus.github.io/jwerty/

我想我无需使用插件就能搞清楚。 我将validation它是否也可以在Mac上运行(我没有自己的),但它适用于PC上的CTRL + R:

 var keys = {}; $(document).ready(function(){ $(document).keydown(function(event) { keys[event.which] = true; //CTRL+R on a PC if(keys[17] && keys[82]) { restart(); return false; } //COMMAND+R an a Mac if(keys[81] && keys[91]) { restart(); return false; } }); $(document).keyup(function (event) { delete keys[event.which]; }); }); 

这个帮助我实现了目标: jQuery .keypress()可以同时检测多个密钥吗?

您可以使用下一个代码在Mac上捕获 + R

 $(document).on( 'keydown', function(event){ if( event.which === 82 && event.metaKey ) { alert( 'Your changes will be lost, are you sure to refresh?' ); } }); 

.metaKey代表Mac上的和PC上的键。