Eric's Thinking Space 程式設計 音樂 心情 有趣 Kuso

2008/01/30

JavaScript 在onkeydown 與 onkeypress 所得到的 KeyCode

之前做了個功能,是要在網站中按下鍵盤特殊鍵後,
直接達成存檔的功能,也就是一般俗稱的Hotkey功能。

原本設定好的功能是用 F9 來執行存檔,經過測試也沒什麼問題。
User卻反應打字打到小寫的 'x' 時,會自動執行存檔... @@
反覆檢視自己的Code,也感覺不出任何異常的狀況...

最後發現是因為JavaScript 在onkeydown 與 onkeypress 二個事件中,
所攔截到的KeyCode會完全不相同所造成的。

我的程式某些原因有時將script由onkeydown事件導向,有時又由 onkeypress事件,
所以發生了怪異錯誤。

大家把此段Script放置到html的標籤中
開啟頁面後,按下鍵盤任意鍵即可檢視一下這二個事件中所得到KeyCode之差異:


//JavaScript 程式碼範例
function document.onkeydown()
{
alert('onkeydown:'+window.event.keyCode);
}

function document.onkeypress()
{
alert('onkeypress:'+window.event.keyCode);
}