Facebook Messenger 於 Ubuntu Linux 中文輸入會被清空問題 - 2022

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 的輸入框沒處理這塊。

  1. 尚未輸入文字,會是預設輸入框 <br>
  2. 輸入文字或空白,輸入框會變成 <span data-lexical-text="true">文字</span>
  3. 在中文輸入的時候,雖然 Facebook Messenger 輸入框會出現文字,但是 ENTER 後,輸入的文字就被清空掉,可能的原因如下:
    1. iBus 輸入文字,在預覽文字階段,Facebook Messenger 是 <span data-lexical-text="true">文字</span>
    2. 然後按 ENTER 後,預覽文字要輸入進去(輸入進去應該要讓視窗先清空),但是此輸入框 FB JS Event 觸發到瞬間空白,於是將輸入框轉換成 <br>,於是輸入的中文就被清空掉 (偶爾又可以輸入成功,就是比較慢被丟進輸入框,就可以輸入成功)
    3. 所以只要在前面先多個「空白」,Facebook Messenger 就會固定在 data-lexical-text="true" 的區塊,不會轉換成 <br>,所以中文就都可以正常輸入

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈Facebook Messenger 於 Ubuntu Linux 中文輸入會被清空問題 - 2022〉中有 11 則留言

    1. 嗯嗯,只要第一碼是 ascii (a-z,0-9 或直接出來的符號),就可以正常傳送

      只是第一碼是空白,預設 facebook 會 trim 掉,其他符號都還是會正常送出

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料