天天看點

【vue】@input - 微軟中文輸入法異常(輸入一個字母會顯示多個)

問題1: windows 電腦用微軟中文輸入法輸入一個字元會顯示多個

問題2: mac或者其他中文輸入法輸入都會有閃爍的抖動感

問題3:由于需求所定,這是一個自定義的輸入框,并且要實時更新,是以用不了v-model 與@blur

(用mac電腦沒重制輸入一個字元變多個,截圖了測試提的bug,bug被關了隻剩個模糊的圖檔~~~)

問題分析

使用 :value, @input - 輸入法異常;

使用 v-model 指令 - 輸入法正常;

使用@blur- 輸入法正常。

  1. v-model源碼分析

    v-model使用的也是input事件

    v-model 判斷了 composing 屬性,當輸入法組合沒有結束的時候,直接傳回,并沒有指派

2.@blur是失焦後才指派,此時輸入法已結束;@input 沒有檢測輸入法結束就直接指派。

問題思考
根據官方規範,Composition 事件觸發順序如下:
  1. 輸入開始時觸發 compositionstart
  2. 選擇字/詞完成輸入時觸發 compositionend

繼續閱讀