如果不使用altKey
, shiftKey
, ctrlKey
, 是否可以检测到它们包括CapsLock,Tab和Space?
问问题
315 次
1 回答
1
这是一种有趣的方法,您可以通过它找出在 JavaScript 中按下了哪个键。这很有帮助
- 根据按下的键触发动作。
- 通过创建缩进而不是切换焦点来防止 Tab 播放剧透
- 查看 Caps Lock 是否打开。尤其是在填写表单字段时,可以通知用户。
- 使用箭头键进行导航等。
这是 JavaScript 代码:-
window.addEventListener("keypress", function(e){
console.log(e.keyCode);
});
window.addEventListener("keydown", function(e){
if(e.keyCode==9)
{
console.log("You Pressed Tab");
e.preventDefault();
}
});
window.addEventListener("keyup", function(e){
var keyPressed;
switch(e.keyCode)
{
case 9: return; // already handled above
case 18: keyPressed="Alt"; e.preventDefault(); break;
case 20: keyPressed="Caps Lock"; break;
case 17: keyPressed="Ctrl"; break;
case 16: keyPressed="Shift"; break;
case 37: keyPressed="Left A"; break;
case 38: keyPressed="Top A"; break;
case 39: keyPressed="Right A"; break;
case 40: keyPressed="Bottom A"; break;
default: keyPressed=e.keyCode;
}
console.log("You pressed "+keyPressed);
});
switch case
构造不在处理程序中的原因keydown
是因为我个人不喜欢在按住键时多次执行处理程序。当然,更多的钥匙可以添加到switch
案例中。另请注意,Tab在keydown
. 这是因为Tab当按键被按下时触发。如果将它放在 下keyup
,则keypress
不会触发处理程序,从而更改窗口焦点并使keyup
处理程序无用。preventDefault()
防止Tab和Alt改变焦点。
代码只是一个说明,根据需要进行更改。
于 2015-10-22T18:29:13.633 回答