使用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上的⊞键。