作者[系統]
看板PttCurrent
標題[開發資訊] 新指令: OSC 8 超連結
時間Tue Sep 30 10:00:00 CST 2026
PTT 終端機通訊協定注意事項
新指令即將上線,請 App 開發者及早測試 & 更新。
指令: OSC 8 超連結 (Terminal Hyperlinks)
*]8;[params];<URL>*\[連結文字]*]8;;*\
* = ESC
*\ = ST (String Terminator, 0x1b 0x5c)
預期行為: App/Client 收到此指令時,將包覆的文字標記為可點擊超連結,
使用者點擊時導向指定 URL;收到空 URL (*]8;;*\) 時結束連結。
若未實作此功能,應直接忽略跳脫序列,僅將連結文字正常顯示於畫面。
指令方向: 單向 (Server -> Client,Client 不需要也不應回傳任何內容)。
上線時間: PTT1 - 10/11
PTT2 - 9/30
說明: 這是現代終端機模擬器廣泛採用的 OSC 8 超連結標準
(Hyperlinks in Terminal Emulators)。
過去 BBS 閱讀文章時的超連結全仰賴 Client 端自行以 Regular Expression 辨識,
常因畫面折行、彩色 ANSI 控制碼穿插或中文字符緊鄰導致 URL 截斷或誤判。
PTT 系統未來預計將以Markdown型式支援超連結,以提供精準的網址連結點選,
終端機輸出則是使用 OSC 8 的格式。終止字元會送出標準的 ST (*\)。
若 Client 端不打算實作超連結點擊可直接忽略,但請確認解析時不要當掉,
且不要將控制碼與 URL 當作一般文字印出。
給開發者的建議:
1. 建議 App / Web Client 實作支援:
OSC 8 如同終端機上的 HTML <a> 標籤,Client 可為範圍內的文字加上底線
或高亮樣式,並於使用者點擊時開瀏覽器開啟,能大幅提升閱讀體驗。
2. 與既有 URL Auto-link 的整合:
若 App 現有邏輯會掃描純文字自動產生連結,在遇到已由 OSC 8 標記的區塊時,
建議優先採用 OSC 8 指定之 URL,避免二次重複辨識產生重疊衝突。
3. 安全性處理:
Client 在開啟使用者點擊的 URL 前,請務必進行協定白名單檢查(僅放行
http:// 與 https://,過濾 javascript: 或其他本機協定)。
4. 若不實作超連結功能:
ANSI 剖析器請遵循 ECMA-48 規範,遇到未知的 OSC 序列時自動
吸收(consume)至 ST 為止,這樣中間包覆的文字仍會正常顯示在畫面上,
畫面排版不受影響。請確保 App 不會因為未知的 OSC 指令而拋出錯誤。
--
※ 發信站: 批踢踢實業坊(ptt.cc)