语义表示系统输出,但需配合white-space: pre或嵌套保留换行缩进;动态插入时须防XSS并正确处理换行符,推荐结构以兼顾语义与格式。

标签语义上用于表示程序或系统输出的样本文本(如命令行反馈、错误消息),但它本身不保留换行和空格——浏览器会像处理普通文本一样折叠空白符,因此直接用 展示多行堆栈信息会导致格式完全丢失。
用 + white-space: pre 保持原始缩进与换行
最简实用方案:将堆栈内容包裹在 中,并通过 CSS 强制保留空白符:
- 给
添加样式white-space: pre(或pre-wrap更友好) - 确保堆栈字符串中的换行符(
\n)和空格被原样传入 HTML(服务端转义或前端 JS 插入时注意) - 示例 HTML 片段:
at foo (script.js:12:15)
at bar (script.js:8:3)
更健壮的做法:配合 语义嵌套
天然支持空白符保留,而 表达“这是系统输出”的语义。二者可合法嵌套(HTML5 允许 包含流内容):
把任意文章或文档内容转换成精美的全屏翻页 HTML 演示文件(幻灯片风格)。当用户发来一篇文章、文档链接、Markdown 内容、或粘贴的文本,并且希望生成演示用的 HTML 时触发。支持任意内容来源:iWiki 链接、KM 链接、本地文件路径、直接粘贴的文本。生成的 HTML 文件保存到本地工作区,并通过企微直接发送给用户。触发词示例:帮我把这篇文章做成PPT、转成演示文档、生成HTML幻灯片、做个演示、转成可以演示的格式、article to deck、make a slide。
- 用
确保格式,用内部明确语义 - 结构清晰,利于无障碍访问和 SEO
- 示例:
<samp>RangeError: Maximum call stack size exceeded<br> at factorial (math.js:4:12)<br> at factorial (math.js:4:12)<br> ... repeated 12345 times</samp>
动态插入时注意转义与换行符处理
若堆栈来自 JavaScript(如 error.stack),直接 innerHTML 可能引发 XSS 或丢失换行:
- 不要直接
element.innerHTML = '' + error.stack + '' - 应先用
document.createTextNode()或textContent安全插入文本,再用包裹<samp></samp>
- 或使用
error.stack.replace(/\n/g, '配合
')white-space: pre——但推荐用更可靠
视觉优化建议
堆栈信息需易读,可补充少量样式提升体验:
- 设置等宽字体:
font-family: ui-monospace, 'SFMono-Regular', Consolas, monospace - 添加浅灰背景和圆角边框增强区分度
- 对文件路径或错误类型关键词,可用
高亮(需额外解析,非必需)
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










