用户脚本Jquery可以识别所有键码事件吗

时间:2018-07-18 06:06:45

标签: jquery userscripts

我正在使用 Tampermonkey 构建可识别键代码事件的用户脚本,并且在触发键时它将起作用。

例如我想按 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");
}
});

该代码与 Enter 1 一起正常工作,但与 Ctrl Shift 和其他键。

有什么我想念的东西吗?或者不是所有的关键事件都可以处理吗?

注意::我一直在使用this link来获取我的密钥代码并在脚本中使用它们。

2 个答案:

答案 0 :(得分:4)

没有为控制键触发

keypress。根据Mozilla文档上的描述:

  

按下产生字符值的键时,将触发keypress事件。产生字符值的键的示例是字母,数字和标点键。不会产生字符值的键示例包括修饰键,例如 Alt Shift Ctrl Meta

一种解决方法是听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");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 1 :(得分:1)

还要确定左右键 ctrl alt shift

$(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

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>