JavaScript裡which、keyCode、charCode的差別

話說離上次更新文章隔了幾天,  就只是在讀一些有的沒的><

像是阿德勒或是有趣的觀念, 像是為何電腦較傾向二位元和16位元的運算啊,

這些一開始都不會想到為什麼的事情,

寫成文章還在想, 畢竟真的滿有趣, 好像進到另一個新奇的世界...



先講在keyboard Event中有2種code types:

1. character codes: 一個表示ASCII character的數字。(http://www.w3schools.com/charsets/ref_html_ascii.asp)

2. key codes: 一個表示實際上在鍵盤中存在的數字。(http://www.w3schools.com/charsets/ref_html_utf8.asp)

還是不太懂, 那點這個連結看一下吧: http://keycodes.atjayjo.com/



首先, keyCode的Unicode character codes用於觸發onkeypress事件;
                                Unicode key codes用於觸發onkeydown & onkeyup事件。

而因在firefox中, keyCode無法在onkeypress事件作用(永遠return 0), 為了相容,
我們可以這樣使用:

var x = event.which || event.keyCode;




再者, charCode的Unicode character codes用於觸發onkeypress事件。而不作用於onkeydown和onkeyup事件(會永遠return 0)。

而為了相容於IE8之前的版本, 我們可以這樣寫:

var x = event.charCode || event.keyCode;


而最新關於DOM Events的規範則是統一用"key"這個屬性去取代which, keyCode, charCode, 但是在實際寫code時, 還是要注意目前瀏覽器是否開始支援key再使用。


p.s. 好玩的打鍵盤找到keycode的連結:
http://keycode.info/



留言

熱門文章