[JavaScript]:e.which,e.charCode,e.keyCodejavascript
Internet Explorer 9.0.8112.16421 Firefax 9.0.1php
Google Chrome 15.0.874.106 Safair 5.1 Opera 11.60css
在這3種事件類型中,keydown和keyup比較底層,而keypress比較高級。java
keypress只能針對一些能夠打印出來的字符有效,而對於功能按鍵,如F1-F十二、Backspace、Enter、Escape、 PageUP、PageDown和箭頭方向等,就不會產生keypress事件,可是能夠產生keydown和keyup事件。然而在FireFox中,功能按鍵是能夠產生keypress事件的。ajax
e.which將給出該鍵的索引值,把索引值轉化成該鍵的字母或數字值的方法須要用到靜態函數String.fromCharCode()正則表達式
在IE中,只有一個keyCode屬性,而且它的解釋取決於事件類型。對於keydown來講,keyCode存儲的是按鍵碼,對於 keypress事件來講,keyCode存儲的是一個字符碼。FireFox中keyCode始終爲0,當keydown/keyup時,charCode=0,which爲按鍵碼。事件keypress時,which和charCode兩者的值相同,存儲了字符碼。 在Opera中,keyCode和which兩者的值始終相同,在keydown/keyup事件中,它們存儲按鍵碼,在keypress時間中,它們存儲字符碼,而charCode沒有定義,始終是undefined。數據庫
瀏覽器 |
Internet Explorer 6/7/8 |
Firefox |
Internet Explorer 9 |
Opera |
Safari |
Chrome |
---|---|---|---|---|---|---|
which | undefined | = | = | = | = | = |
charCode | undefined | = | = | undefined | = | = |
keyCode | (√) | 0 | = | = | = | = |
/* @By :D.n.sky www.desetang.com */ function $A(s){ return document.getElementById(s)?document.getElementById(s):s; } /* 輸出 */ var viewKey = function (e){ var currKey=0,CapsLock=0; var e=e||event; currKey=e.keyCode||e.which||e.charCode; CapsLock=currKey >=65 && currKey <=90; var txt="type:"+e['type'] +"Current:"+String.fromCharCode(currKey) +"Decimal:"+currKey +"keyCode:"+e['keyCode'] +"which:"+e['which'] +"charCode:"+e['charCode'] +"大寫:"+CapsLock +"altKey:"+e['altKey'] +"ctrlKey:"+e['ctrlKey'] +"shiftKey:"+e['shiftKey'] +"repeat:"+e['repeat']; /* 美化 */ txt=txt.replace(/(\d)/g,'<font color=#f00>$1</font>'); $A('result').innerHTML=txt; } /* 關聯事件 */ document.onkeypress= viewKey;
推薦博文:瀏覽器