問題1: windows 電腦用微軟中文輸入法輸入一個字元會顯示多個
問題2: mac或者其他中文輸入法輸入都會有閃爍的抖動感
問題3:由于需求所定,這是一個自定義的輸入框,并且要實時更新,是以用不了v-model 與@blur
(用mac電腦沒重制輸入一個字元變多個,截圖了測試提的bug,bug被關了隻剩個模糊的圖檔~~~)
問題分析
使用 :value, @input - 輸入法異常;
使用 v-model 指令 - 輸入法正常;
使用@blur- 輸入法正常。
-
v-model源碼分析
v-model使用的也是input事件
v-model 判斷了 composing 屬性,當輸入法組合沒有結束的時候,直接傳回,并沒有指派
2.@blur是失焦後才指派,此時輸入法已結束;@input 沒有檢測輸入法結束就直接指派。
問題思考
根據官方規範,Composition 事件觸發順序如下:
- 輸入開始時觸發 compositionstart
- 選擇字/詞完成輸入時觸發 compositionend