相關參考文章: http://mdn.beonex.com/en/DOM/CompositionEvent.html 輸入法(Input Method Editor,以下全用IME代稱)的處理一直是我們漢字文化圈的麻煩之一 在前端滿常碰到客製化 key event 的需求 當客戶按了某個鍵或輸入某段文字後會執行我們自訂的程式 只是這樣的處理方式在輸入法啟用狀態滿常有例外 例如:選字時會用到上下移動鍵,刪除、或確定選字用到 Esc、Enter、Backspace 選字的時候我們會希望在這段時間的輸入不會影響原先的狀態 麻煩的點是這一段在瀏覽器的處理並沒有完整的規範 大概是其他國家沒什麼選字的需求,即使在HTML5規格接近定稿的時刻, IME 在W3C依然是草案狀態 該草案推動者是在日本Google工作的日本人,顯得願意投入的資源並不多 也因此目前瀏覽器的實作略有不同,在輸入法狀態甚至有keyup event被吃掉等等的奇怪狀態 最後我找到的是下面這樣簡單的瀏覽器共通實作,起碼在近代的瀏覽器可以簡單的判斷輸入法狀態 document.addEventListener("compositionstart", function(){ window.IMEStatus=1; }); document.addEventListener("compositionend", function(){ window.IMEStatus=2; }); 至少能夠判斷那些時候是在輸入法啟用狀態,避免執行不該啟動的程式碼