应使用fetch配合data-status属性控制表格错误ui:在.catch()中设data-status="error"并插入含重试按钮的提示块,重试时先置为"loading"、复用原请求逻辑、保留分页参数,成功后清理错误节点与状态。

HTML 本身不提供错误状态管理能力,所谓“错误状态”实际是 JavaScript 控制的 UI 表现层逻辑,核心在于:用 JS 捕获失败、更新 DOM、提供重试入口,并确保用户感知清晰。
怎么用 fetch + 状态变量控制表格错误 UI
表格数据加载失败时,不能只靠 console.error,得把错误状态映射到真实 DOM 节点上。关键不是“显示错误”,而是“让错误可操作”。
- 用一个
data-status属性标记容器状态,比如<div id="table-container" data-status="loading">,后续 JS 可统一读取和切换 <li>在 <code>.catch()里设置data-status="error",同时插入带重试按钮的提示块,而不是直接写死innerHTML - 重试按钮绑定事件时,优先复用原始请求逻辑(如封装成函数),避免硬编码 URL 或参数导致二次出错
- 别忘了清空旧错误状态:点击重试前先设回
data-status="loading",否则按钮可能被重复点击多次 -
window.onerror只响应三类事件:JS 执行异常、资源加载失败(<img src="404.jpg">)、未处理的 Promise rejection - 像
<div><p>hello</p></div>这种嵌套错误,DOMParser 会照常返回 Document,但doc.body.children可能为空或结构错位 - 真正要防的是“动态插入 HTML 片段”时的失控,比如 CMS 富文本或用户提交内容——这时才需要
DOMParser做轻量校验 - 文案避免模糊表述,比如不用“加载失败”,改用“无法获取订单列表,请检查网络后重试”——把上下文带进去
- 重试按钮要有 loading 状态反馈,例如点击后禁用按钮并加
aria-busy="true",防止重复提交 - 如果错误发生在分页或筛选场景,重试时应保留当前页码、搜索关键词等参数,否则用户点一次重试就回到第一页
- 不要用
alert()或弹窗打断流程,错误提示应内联在原位置,保持视觉连贯性
为什么 window.onerror 捕不到 HTML 渲染失败
这是最容易被误解的一点:浏览器对非法 HTML 的处理是静默修复,不抛异常、不触发任何 JS 错误事件。你看到的“页面白屏”或“布局错乱”,往往不是 HTML 解析报错,而是后续 JS 操作了意外结构的 DOM。
如何设计一个可点击重试的错误占位块
错误 UI 不是装饰,它必须包含明确动作路径。一个有效占位块至少要回答三个问题:“发生了什么?”、“我能做什么?”、“刚才想看的内容还在吗?”
最常被忽略的是错误恢复后的状态清理:重试成功后不仅要还原 data-status,还得移除错误提示节点、恢复表格原有 DOM 结构,否则多次失败重试可能导致节点重复插入或事件监听器堆积。











