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

<samp></samp> 标签语义上用于表示程序或系统输出的样本文本(如命令行反馈、错误消息),但它本身不保留换行和空格——浏览器会像处理普通文本一样折叠空白符,因此直接用 <samp></samp> 展示多行堆栈信息会导致格式完全丢失。
用 + white-space: pre 保持原始缩进与换行
最简实用方案:将堆栈内容包裹在 <samp></samp> 中,并通过 CSS 强制保留空白符:
- 给
<samp></samp>添加样式white-space: pre(或pre-wrap更友好) - 确保堆栈字符串中的换行符(
\n)和空格被原样传入 HTML(服务端转义或前端 JS 插入时注意) - 示例 HTML 片段:
at foo (script.js:12:15)
at bar (script.js:8:3)
更健壮的做法:配合 <pre class="brush:php;toolbar:false;"></code> 语义嵌套</H3>
<p><code><pre class="brush:php;toolbar:false;"></code> 天然支持空白符保留,而 <code><samp></code> 表达“这是系统输出”的语义。二者可合法嵌套(HTML5 允许 <code><samp></code> 包含流内容):</p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/xiazai/skill9263" title="Html2md"><img
src="https://img.php.cn/upload/skill/000/000/081/179249945220127.jpg" alt="Html2md" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/xiazai/skill9263" title="Html2md">Html2md</a>
<p>使用 Readability + Turndown 将 HTML 页面转换为干净的、Agent 友好的 Markdown。去除导航栏、广告、页脚、Cookie 横幅、社交按钮等干扰元素。支持 URL...</p>
</div>
<a href="/xiazai/skill9263" title="Html2md" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div>
<ul>
<li>用 <code><pre class="brush:php;toolbar:false;"></code> 确保格式,用内部 <code><samp></code> 明确语义</li>
<li>结构清晰,利于无障碍访问和 SEO</li>
<li>示例:</li>
</ul>
<font face="monospace">
<pre class="brush:php;toolbar:false;"><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></pre>
<h3>动态插入时注意转义与换行符处理</h3>
<p>若堆栈来自 JavaScript(如 <code>error.stack),直接 innerHTML 可能引发 XSS 或丢失换行:
立即学习“前端免费学习笔记(深入)”;
- 不要直接
element.innerHTML = '<samp>' + error.stack + '</samp>' - 应先用
document.createTextNode()或textContent安全插入文本,再用<pre class="brush:php;toolbar:false;"><samp></samp></pre>包裹 - 或使用
error.stack.replace(/\n/g, '<br>')配合white-space: pre——但推荐用<pre class="brush:php;toolbar:false;"></pre>更可靠
视觉优化建议
堆栈信息需易读,可补充少量样式提升体验:
- 设置等宽字体:
font-family: ui-monospace, 'SFMono-Regular', Consolas, monospace - 添加浅灰背景和圆角边框增强区分度
- 对文件路径或错误类型关键词,可用
<mark></mark>高亮(需额外解析,非必需)


















