添加微信公众号《Linux就该这么学》,掌握最新IT资讯动态,免费领取Linux课程以及专业的RHCE考前答疑服务。
《Linux就该这么学》在线免费阅读地址:http://www.linuxprobe.com/
我们先从浏览器按键时间说起,
用JavaScript实现键盘记录,要关注浏览器的三种按键事件类型,
它们分别对应onkeydown、 onkeypress和onkeyup这三个事件句柄。一个典型的按键会产生所有这三种事件,依次是keydown,keypress,然后是按键释放时候的keyup。
KeyDown:在控件有焦点的情况下按下键时发生。
KeyPress:在控件有焦点的情况下按下键时发生。
KeyUp:在控件有焦点的情况下释放键时发生。
在这3种事件类型中,keydown和keyup比较底层,而keypress比较高级。这里所谓的高级是指,当用户按下shift + 1时,keypress是对这个按键事件进行解析后返回一个可打印的“!”字符,而keydown和keyup只是记录了shift + 1这个事件。
但是keypress只能针对一些可以打印出来的字符有效,而对于功能按键,如F1-F12、Backspace、Enter、Escape、 PageUP、PageDown和箭头方向等,就不会产生keypress事件,但是可以产生keydown和keyup事件。然而在FireFox中,功能按键是可以产生keypress事件的。
传递给keydown、keypress和keyup事件句柄的事件对象有一些通用的属性。如果Alt、Ctrl或Shift和一个按键一起按下,这通过事件的altKey、ctrlKey和shiftKey属性表示,这些属性在FireFox和IE中是通用的。
注意:
KeyDown触发后,不一定触发KeyUp,当KeyDown 按下后,拖动鼠标,那么将不会触发KeyUp事件。
KeyPress主要用来捕获数字(注意:包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等 除了 F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键 外的ANSI字符
KeyPress 只能捕获单个字符,可以捕获单个字符的大小写,不区分小键盘和主键盘的数字字符。
KeyDown 和KeyUp 通常可以捕获键盘除了PrScrn(截屏)所有按键
KeyDown 和KeyUp 可以捕获组合键,对于单个字符捕获的KeyValue 都是一个值,也就是不能判断单个字符的大小写,区分小键盘和主键盘的数字字符。
其中PrScrn 按键KeyPress、KeyDown和KeyUp 都不能捕获。
keydown、keypress 按着不动会持续执行事件,keyup执行一次
在使用键盘的时候,通常会使用到CTRL+SHIFT+ALT 类似的组合键功能,通过KeyUp 事件能够来处理(这里说明一下为什么不用KeyDown,因为在判定KeyDown的时候,CTRL、SHIFT和ALT 属于一直按下状态,然后再加另外一个键是不能准确捕获组合键,所以使用KeyDown 是不能准确判断出的,要通过KeyUp 事件来判定 )
前端架构暴力拆解,源码解析,多年经验分享,请持续关注!
纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注。
导读 | 致力于兼容Windows应用和驱动开发的免费开源操作系统ReactOS幕后团队今天非常开心的宣布0.4.3版本。 |
和此前版本ReactOS 0.4.2相隔三个月时间,是0.4系列分支下的第三个维护版本,共计修复了由用户报告或者开发团队自己发现的342处BUG和问题,同时0.4.3也引入了新功能,例如部署了全新的Winsock库。
在今天的声明中写道:“在正式取代老的Winsock库之前依然还有很多的工作需要完成,目前主要由 Peter Hater和Andreas Maier两人负责推进。他们的努力今天终于取得了阶段性成果,团队经过商量决定取代此前的库,0.4.3将会成为首个包含新库的发行版本。”
启用全新Winsock库对于ReactOS用户来说无疑是重大新闻,承诺在用户模式应用中更高效的支持所有网络操作,改善了类似于GoG(Good old Games)和新版Python runtime的兼容性。ReactOS 0.4.3同时还改善了NTVDM系统组件的实施。
原文来自: http://www.cnbeta.com/articles/558875.htm
本文地址: http://www.linuxprobe.com/reactos-0_4_3-publish.html编辑:杨鹏飞,审核员:岳国帅
点击左下角查看更多热门技术
*请认真填写需求信息,我们会在24小时内与您取得联系。