1

如果不使用altKey, shiftKey, ctrlKey, 是否可以检测到它们包括CapsLock,TabSpace?

4

1 回答 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案例中。另请注意,Tabkeydown. 这是因为Tab当按键被按下时触发。如果将它放在 下keyup,则keypress不会触发处理程序,从而更改窗口焦点并使keyup处理程序无用。preventDefault()防止TabAlt改变焦点。
代码只是一个说明,根据需要进行更改。

于 2015-10-22T18:29:13.633 回答