作者[系统]
看板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)