事件 - htmx:swapError

htmx:swapError 是一个 HTMX 的错误事件,在响应内容无法被插入页面时触发。

这通常发生于:

  • 目标元素(hx-target)不存在

  • 插入内容的方式(hx-swap)不支持当前目标元素

  • 响应中有语法错误或不兼容结构

  • 插入失败时触发的是 swapError,而不是 request error

事件参数

  • detail.xhr - XMLHttpRequest
  • detail.elt - 触发请求的元素
  • detail.target - 请求的目标
  • detail.requestConfig - AJAX请求的配置

触发场景示例

<!-- 这个按钮的目标元素是不存在的元素 -->
<button 
  hx-get="/partial"
  hx-target="#does-not-exist"
  hx-swap="innerHTML">
  请求内容
</button>

如果服务器返回:<div>新的内容</div>,但页面里没有 ID 为 #does-not-exist 的元素,那么 HTMX 就无法完成 swap 操作,就会触发该事件。

常见的发生原因

场景 说明
元素 ID 写错 常见错误,导致无法插入
插入 <tr> 到 <ul> HTML 结构不合法,也可能失败
hx-swap="outerHTML" 把自己删了 下次操作无效
动态移除目标元素后又触发请求 会触发 swapError