添加微信公眾號《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小時內與您取得聯系。