【问题标题】:Can all keycode events be recognized by a user-script Jquery用户脚本 Jquery 是否可以识别所有键码事件
【发布时间】:2018-07-18 06:06:44
【问题描述】:

我正在使用 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");
}
});

该代码适用于 Enter1 但不适用于 CtrlShift 和其他键。

有什么我遗漏的或者不是所有关键事件都可以处理的吗?

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

【问题讨论】:

    标签: jquery userscripts


    【解决方案1】:

    keypress 不会被控制键触发。根据 Mozilla 文档上的描述:

    当按下产生字符值的键时会触发keypress 事件。产生字符值的键示例有字母键、数字键和标点键。不产生字符值的键示例是修饰键,例如 AltShiftCtrlMeta kbd>.

    一种解决方法是收听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>

    【讨论】:

      【解决方案2】:

      要确定左右 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

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

      【讨论】:

        猜你喜欢
        • 2021-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多