我正在用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键根本没有任何价值。我不知道为什么。我在做错什么吗?
答案 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>