按键事件不适用于PrintScreen或Windows按键

时间:2019-02-18 09:42:58

标签: javascript jquery

我正在用jQuery写一个简单的函数。当我按下键盘上的 1 键时,它将隐藏我的文档。效果很好:

document.onkeypress=key1;

function key1(e) {
  if (e.which == 49) {
    // alert("testing");
    $("#documentViewer").hide();
  }
}

现在,当我希望此功能在打印屏幕(键代码44)或Windows键(键代码91 / {{ 1}}),当我按下它们时。

我尝试将密钥代码更改为这些值,但不幸的是,它不会隐藏文档,甚至不会引发92调用。无法检测到按键。

我什至使用下面的链接来检查按下键时的键码是什么:https://keycode.info/

按printscreen或win键根本没有任何价值。我不知道为什么。我在做错什么吗?

1 个答案:

答案 0 :(得分:2)

问题是因为keypress事件不会针对不会创建可打印内容的按键触发。

解决方法是改用keyup

document.onkeyup = key1;

function key1(e) {
  switch (e.which) {
    case 49: // 1
      $("#documentViewer").hide();
      break;
    case 44: // PrintScreen
      console.log('You pressed print screen');
      break;
    case 91: // left windows
    case 92: // right windows
      console.log('You pressed the one of the windows keys');
      break;
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="documentViewer">Foo</div>