【问题标题】:Detecting which key is pressed - is this a good way?检测按下哪个键 - 这是一个好方法吗?
【发布时间】:2012-07-18 19:42:25
【问题描述】:

不久前我在互联网上找到了一个简单的代码......找不到它的特定站点,但代码是在 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();"吗? (这段代码我没编过,所以不知道。)

【问题讨论】:

    标签: javascript html keystroke


    【解决方案1】:

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

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

    此外,最好在您的脚本中执行此操作(unnobtrusive javascript 用法的一部分)。 keypress 处理程序就足够了,因为否则 enter 值将成为输入值的一部分。比如:

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

    或者你可以使用addEventListener/attachEvent (See here)。

    【讨论】:

    • @Kooilnc 我不太确定你在代码中的意思......你能告诉我在实践中如何做吗?
    【解决方案2】:
    function displayunicode(e){
            var unicode = e.keyCode ? e.keyCode : e.charCode
            alert(unicode)
    }
    

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

    【讨论】:

      猜你喜欢
      • 2010-12-24
      • 1970-01-01
      • 2021-07-14
      • 2016-10-31
      • 2016-01-31
      • 1970-01-01
      • 2013-11-05
      • 2012-08-21
      • 2020-10-28
      相关资源
      最近更新 更多