是否可以通过用户脚本Jquery识别所有键码事件

我正在使用Tampermonkey构建一个用户脚本来识别键码事件,当键被触发时它将执行一个function。

例如。 我想按Enter键 ,其keycode为13,所以我使用了这段代码

 $(document).keypress(function(event){ var which = (event.which ? event.which : event.keyCode); if(which == '13'){ alert("You Pressed Enter key"); } else if(which == '17'){ alert("You Pressed Control key"); } }); 

使用Enter1时代码可以正常工作,但是不能使用CtrlShift和其他键。

我有什么遗漏或不能处理所有关键事件吗?

注意:我一直在使用此链接获取我的密钥代码并在我的脚本中使用它们。

不会触发控制键的按键。 根据Mozilla文档的说明:

keypress产生字符值的键时会触发keypress事件。 产生字符值的键的示例是字母,数字和标点符号键。 不产生字符值的键的示例是修饰键,例如AltShiftCtrlMeta

一种方法是收听keydownkeyup事件:

 $(document).keydown(function(event) { var which = (event.which ? event.which : event.keyCode); if (which == '13') { alert("You Pressed Enter key"); } else if (which == '17') { alert("You Pressed Control key"); } }); 
  

要确定左右ctrlaltshift键,还要:

 $(document).keyup(function (e) { if (e.keyCode == 16) { if (e.originalEvent.location == 1) alert('Left SHIFT pressed.'); else alert('Right SHIFT pressed.'); } else if (e.keyCode == 17) { if (e.originalEvent.location == 1) alert('Left CTRL pressed.'); else alert('Right CTRL pressed.'); } else if (e.keyCode == 18) { if (e.originalEvent.location == 1) alert('Left ALT pressed.'); else alert('Right ALT pressed.'); e.preventDefault(); } }); 

你必须包括jquery