compositionEnd 和 input 事件(中文輸入法問題)

網上用 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

相關文章
相關標籤/搜索