在使用JavaScript做WEB键盘事件侦听捕获时,主要采用onkeypress、onkeydown、onkeyup三个事件进行出来。该三个事 件的执行顺序如下:onkeydown -> onkeypress ->onkeyup。在一般情况下,采用三种键盘事件均可对键盘输入进行有效的响应。当在实际使用中,会发现这几者有些不同的差别。
onkeypress事件不能对系统功能键(例如:后退、删除等,其中对中文输入法不能有效响应)进行正常的响应,onkeydown和onkeyup均可以对系统功能键进行有效的拦截,但事件截获的位置不同,可以根据具体的情况选择不同的键盘事件。
由于onkeypress不能对系统功能键进行捕获,导致window.event对象的keyCode属性和onkeydown,onkeyup键盘事 件中获取的keyCode属性不同,主要表现在onkeypress事件的keyCode对字母的大小写敏感,而onkeydown、onkeyup事件 不敏感;onkeypress事件的keyCode无法区分主键盘上的数字键和付键盘数字键的,而onkeydown、onkeyup的keyCode对 主付键盘的数字键敏感。
关于键盘事件有下面的方法:
- element(event) :返回触发事件的元素
- isLeftClick(event) :判断是否按下的左键
- pointerX(event) :事件触发时鼠标的横坐标,对于非鼠标事件,在ff中没有此信息,但在ie中有?
- pointerY(event):事件触发时鼠标所在位置的纵坐标
- stop(event):阻止事件向上传播和浏览器的默认处理方法
- findElement(event, tagName) :找到触发事件的元素的所有祖先元素中的tagName为tagName的一个元素
- observe(element, name, observer, useCapture):注册事件处理函数
- stopObserving(element, name, observer, useCapture):撤销注册的事件