主要分四个部分@H_404_3@
第一部分:浏览器的按键事件@H_404_3@
用js实现键盘记录,要关注浏览器的三种按键事件类型,即keydown,keypress和keyup,它们分别对应onkeydown、 onkeypress和onkeyup这三个事件句柄。一个典型的按键会产生所有这三种事件,依次是keydown,keypress,然后是按键释放时候的keyup。@H_404_3@
在这3种事件类型中,keydown和keyup比较底层,而keypress比较高级。这里所谓的高级是指,当用户按下shift + 1时,keypress是对这个按键事件进行解析后返回一个可打印的“!”字符,而keydown和keyup只是记录了shift + 1这个事件。[1]@H_404_3@
但是keypress只能针对一些可以打印出来的字符有效,而对于功能按键,如F1-F12、Backspace、Enter、Escape、 PageUP、PageDown和箭头方向等,就不会产生keypress事件,但是可以产生keydown和keyup事件。然而在FireFox中,功能按键是可以产生keypress事件的。@H_404_3@
传递给keydown、keypress和keyup事件句柄的事件对象有一些通用的属性。如果Alt、Ctrl或Shift和一个按键一起按下,这通过事件的altKey、ctrlKey和shiftKey属性表示,这些属性在FireFox和IE中是通用的。@H_404_3@
第二部分:兼容浏览器@H_404_3@
凡是涉及浏览器的js,就都要考虑浏览器兼容的问题。@H_404_3@
目前常用的浏览器主要有基于IE和基于Mozilla两大类。Maxthon是基于IE内核的,而FireFox和Opera是基于Mozilla内核的。@H_404_3@
首先需要了解的是如何初始化该事件,基本语句如下:@H_404_3@
function keyDown(){}
document.onkeydown = keyDown;@H_404_3@
当浏览器读到这个语句时,无论按下键盘上的哪个键,都将呼叫KeyDown()函数。@H_404_3@
FireFox和Opera等程序实现要比IE麻烦,所以这里先描述一下。@H_404_3@
keyDown()函数有一个隐藏的变量--一般的,我们使用字母“e”来表示这个变量。
function keyDown(e) 变量e表示发生击键事件,寻找是哪个键被按下,要使用which这个属性: e.which e.which将给出该键的索引值,把索引值转化成该键的字母或数字值的方法需要用到静态函数String.fromCharCode(),如下: String.fromCharCode(e.which) 把上面的语句放在一起,我们可以在FireFox中得到被按下的是哪一个键:第一部分:浏览器的按键事件
第二部分:兼容浏览器
第三部分:代码实现和优化
第四部分:总结
@H_404_3@
2.1 事件的初始化
@H_404_3@
2.2 FireFox和Opera的实现方法
@H_404_3@
@H_404_3@
<div class="jb51code">
<pre class="brush:js;">
function keyDown(e) {
var keycode = e.which;
var realkey = String.fromCharCode(e.which);
alert("按键码: " + keycode + " 字符: " + realkey);
}
document.onkeydown = keyDown;