检测哪个键被按下 - 这是一个好方法吗?

问题描述:

前段时间我在网上找到一个简单的代码...找不到它的特殊网站,但代码是在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处理程序取决于您想要用它做什么。你显示的代码是一个输入处理程序。如果您希望在输入时输入文字输入字段,请输入,将处理程序添加到该字段效率更高。

此外,最好从你的脚本中使用它(unnobtrusive javascript的一部分使用)。一个keypress处理程序就足够了,否则输入值将成为输入值的一部分。喜欢的东西:

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

,或者您可以使用addEventListener/attachEventSee here)。

+0

@Kooilnc我不完全确定你的代码是什么意思...你能告诉我如何在实践中做到这一点吗? – 2012-07-18 20:06:53

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

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

+0

啊,然后你可以很容易找到键码?谢谢! :d – 2012-07-18 20:07:52