Facebook Messenger 在 Ubuntu Linux 中文輸入(iBus)都被清空問題,要怎麼解決?
先講解法:
- 在文字輸入前,先輸入個空白,或輸入個「.」,然後在輸入文字,就會正常。
- 註:前面輸入一個空白,在最後文字輸入後,Facebook messenger 也會將前面那個空白自動去掉,所以不用擔心。
Facebook Messenger 於 Ubuntu Linux 中文輸入會被清空問題
至於為何 前面輸入一個空白,Facebook messenger 就可以正常將中文輸入進去的原因:
仔細查看一下,原因是 Facebook 的訊息視窗裡面,在空白和有資料的情況,會有 「<br>」 和 「<span data-lexical-text="true">空白</span>」 的自動切換(甚至應該說是取代)。
Facebook Messenger 的變動
- 平常沒有輸入文字的時候,Messenger 的視窗內容是「<br>」
- 若有輸入文字的時候,Messenger 的視窗內容是「<span data-lexical-text="true">文字</span>」
那在 Ubuntu Linux iBus 遇到的情況可能如下:
iBus 輸入文字會先在 Preview,然後 ENTER 後,才會進入輸入框,但是 Facebook Messenger 的輸入框沒處理這塊。
- 尚未輸入文字,會是預設輸入框 <br>
- 輸入文字或空白,輸入框會變成 <span data-lexical-text="true">文字</span>
- 在中文輸入的時候,雖然 Facebook Messenger 輸入框會出現文字,但是 ENTER 後,輸入的文字就被清空掉,可能的原因如下:
- iBus 輸入文字,在預覽文字階段,Facebook Messenger 是 <span data-lexical-text="true">文字</span>
- 然後按 ENTER 後,預覽文字要輸入進去(輸入進去應該要讓視窗先清空),但是此輸入框 FB JS Event 觸發到瞬間空白,於是將輸入框轉換成 <br>,於是輸入的中文就被清空掉 (偶爾又可以輸入成功,就是比較慢被丟進輸入框,就可以輸入成功)
- 所以只要在前面先多個「空白」,Facebook Messenger 就會固定在 data-lexical-text="true" 的區塊,不會轉換成 <br>,所以中文就都可以正常輸入