Apple‐converted‐space 的由來 - daniel-qa/Vue GitHub Wiki
- 為什麼 Apple 要這樣寫,而不直接給 width?
這涉及網頁渲染的一個老問題:「空白摺疊 (Whitespace Collapsing)」。
在一般 HTML 中,如果你寫了 10 個空格:
<span> </span> , 瀏覽器預設只會顯示 1 個 空格的寬度。
Apple 透過這個特定的 class,搭配其內部的特殊空格字元(通常是 U+00A0),可以達成兩個目的:
強制不摺疊:確保你在備忘錄裡敲的 3 個空格,在網頁上也一定是 3 個空格的寬度。
語義標記:它告訴後續處理程式(或是像我們這樣的開發者),這段空白不是程式碼邏輯產生的,而是從 Apple 生產力工具「轉換」過來的。
- 對開發者的困擾
在 Vue 2 或 iView 的 UI 元件中,這種寫法最討厭的地方在於:
複製貼上造成的污染:如果使用者從 Mac 備忘錄複製一段文字貼進你的 iView Input 元件,這些標籤可能會被過濾掉,但那個特殊的「不換行空格字元 (\u00A0)」會留下來。
外觀難以察覺:在編輯器裡看,它跟一般空格寬度一模一樣,但當你做 String.trim() 或 String.split(' ') 時,會發現它刪不掉也切不開(因為它不是 \u0020 標準空格)。
如果您在處理這類資料,建議在後端存檔或前端驗證時,用正則表達式把這類「裝神弄鬼」的空格統一格式化。