不使用altKey
,shiftKey
,ctrlKey
,是否可以检测到它们,包括 CapsLock , Tab 和< kbd>空间?
答案 0 :(得分:1)
这是一种有趣的方式,您可以在其中找出在JavaScript中按下了哪个键。这非常有用
这是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 更改焦点。
代码只是一个例子,必要时进行更改。