網上用 compositionstart + compositionend + input 解決中文輸入法問題的辦法node
node.addEventListener('compositionstart', function(){ cpLock = true; }) node.addEventListener('compositionend', function(){ cpLock = false; }) node.addEventListener('input', function(){ if(!cpLock)console.log(this.value); });
如今貌似很差使了瀏覽器
測試了下發現:測試
compositionend 在 input 事件以後才觸發 so。。。this
因而只能在compositionend 裏 也加上處理代碼事件
node.addEventListener('compositionstart', function(){ cpLock = true; }) node.addEventListener('compositionend', function(){ cpLock = false; if(!cpLock)console.log(this.value); }) node.addEventListener('input', function(){ if(!cpLock)console.log(this.value); });
並非完美方案:input
若是有些瀏覽器compositionend 在 input 事件以前,就會執行兩次,就得繼續填坑。。。it
暫時就這麼地吧io