把 OpenAI 联网答案放到网页,怎样让原有引用清楚可点且不把文本当 HTML

2026-10-24

联网回答展示时保留原文,用DOM文本节点建立正文和可点击来源;引用范围单位不明确时,保留全文加来源列表比错误切片更可靠。模型文字绝不能直接拼到innerHTML,否则一段看似普通的脚本字面可能变成可执行标记。

先保存原文和引用元数据

官方web search指南要求来源清楚可见并可点击,url_citation提供URL、标题及对应范围。附件response-fixture.json是合成回答,包含中文、emoji、组合字符及script字面;本地明确约定范围以Unicode码点计数,不把JavaScript默认UTF-16下标冒充API保证。真实响应若偏移约定不同,必须写适配层;没有充分依据时直接保留全文和编号来源列表,不强行插入错误位置。

重叠和越界分别显示

两个合成引用范围分别覆盖“中文😀”与“😀 é”,存在重叠,来源列表分别保留,不以一个覆盖另一个。越界范围仍保留合法来源链接,但在条目里写明需要人工核对位置。来源存在和范围有效是两个判断,不能因为URL能打开就把越界注释静默截短。若多个来源支持同一段文字,应保留多条来源而不是随意丢失一半证据。

用文本节点与链接元素渲染

阅读页通过textContent保存原答案,使用createElement建立a,再设href与textContent。仅允许http与https方案,合成javascript方案会被拒绝。内嵌JSON还转义小于号等字符,避免script结束标签提前截断脚本;仅转义HTML正文却漏掉脚本数据位置也可能出错。页面不fetch附件,所以直接打开即可运行,所有可点击的来源均指向真实官方文档。

浏览器断言检查真实DOM

dom-check.py实际启动浏览器,检查原文中的中文与组合字符完整、答案下面没有script节点、window.injected未出现、重叠标签正确,危险方案被拒绝且越界状态可见。这个测试比搜索源码没有innerHTML更接近读者实际看到的结果。引用可点仍不能证明结论受来源支持,证据内容要另行阅读。本包没有请求模型或联网读取回答,所有注释只用于演示安全展示,不代表真实API返回的偏移兼容性验证。

无障碍阅读时,来源标题应可理解,不只显示一串序号。正文与来源列表采用同一顺序编号,越界来源仍能通过列表找到;如果后续给正文插入高亮,不要改写原文再沿用旧偏移,否则原来正确的范围也会错位。

下载与复现

下载完整样例包,解压到一个新文件夹;也可查看全部文件清单和主脚本。使用Python 3.10或更新版本,在解压目录运行。依赖写在安装清单,建议在自己创建的虚拟环境安装。

python -m pip install -r requirements.txt
python -B run.py
python -B run.py --negative

先查看主要结果,再修改输入重跑;已有输入会保留,结果写回同目录。边界命令可能故意非零退出,也可能输出明确的不适用状态,按正文说明判断,不把所有非零退出都当成安装故障。浏览器检查另运行python -B dom-check.py,首次需要按Playwright文档安装Chromium;网页本身可直接打开,不需要HTTP服务。

依据与延伸阅读

资料核对日期为2026年10月24日。一手资料1:联网回复的URL引用应显眼且可点击,注释含URL、标题和范围;本地码点约定不冒充平台偏移保证。

相关参考2:a元素用于创建链接,文本节点可保留原始文字;URL方案需由应用显式限制。

继续阅读:Gemini 从文档找答案,怎样检验引用真的支持结论;给 Gemini 三个链接做对比,怎样在报告里看出哪一个其实没读到;AI 初稿里的引用编号一改就乱,怎样用稳定引用键生成参考文献表。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。

加微信,把这一页存到手机上

扫码加站长企业微信,会自动把这一页的链接发给你,方便在手机上接着看。AI 落地卡住了,也可以直接问。

去留微信

留言讨论

评论发布后会被人工复核,违规内容将被删除。

    还没有人评论,来说说你的看法

    如果发表没有反应,可以前往联系我们告诉我们。

    这个页面有问题?

    提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。