检测按下了哪个键——这是一个好方法吗

Detecting which key is pressed - is this a good way?

本文关键字:一个 方法 检测      更新时间:2023-12-06

我不久前在互联网上发现了一个简单的代码。。。找不到它的特殊网站,但代码是在2005年制定的。所以,我想知道这是否是一个好方法:

这是在HTML:中

<body onload="document.body.focus();" onkeyup="return keypressed(event)">

当键打开时,它会在JavaScript中调用此函数:

function keypressed(e) {
    var intKey = (window.Event) ? e.which : e.keyCode;
    if (intKey == 13) { // 13 = enter key
        //something happens if the key is clicked
    }
        // here, you can add as many if sentences for key strokes as you want! (same as first)
return true;
}

我的意思是,代码已经有7年的历史了(也许更多!),我认为它可能有点过时或非常过时!

我的问题:

  1. 有更好的方法吗?还是这仍然是一个好方法?(我不想将jQuery用于此代码,因为我不想仅将其用于一个函数)

  2. 我真的需要这个代码吗:onload="document.body.focus();"?(我还没有编程这个代码,所以我不知道。)

您不需要load处理程序,页面加载后将已经聚焦,和/或如果有人按在页面上的任何位置输入,它也将聚焦。

如果您需要keyup处理程序,取决于您想对它做什么。您显示的代码是一个回车处理程序。如果您希望文本输入字段在键入enter时起作用,那么将处理程序添加到该字段会更有效。

此外,最好在脚本中执行(这是不引人注目的javascript使用的一部分)。keypress处理程序就足够了,因为否则enter值将成为输入值的一部分。类似于:

[someTextInput].onkeypress = function(e){
  e = e || event;
  if ( (e.which || e.keyCode) === 13 ){
     // do things
  }
}

或者您可以使用addEventListener/attachEvent(请参阅此处)。

function displayunicode(e){
        var unicode = e.keyCode ? e.keyCode : e.charCode
        alert(unicode)
}

做同样事情的另一种方法。