HTMX - 事件

HTMX 提供了丰富的事件系统,允许您连接到 HTMX 请求生命周期中的各个点。这些事件可用于添加自定义行为、修改请求或响应 HTMX 操作的不同状态。

核心 HTMX 事件

HTMX 中有 4 种核心事件,如下所示。

请求生命周期事件

  • htmx:beforeRequest: 在发出 AJAX 请求之前触发。
  • htmx:beforeSend: 在发送请求之前触发。
  • htmx:afterRequest: 在 AJAX 请求完成后触发。
  • htmx:afterSettle: 在 DOM 稳定后触发。
  • htmx:xhr:loadstart: 在请求开始。
  • htmx:xhr:loadend: 请求结束时触发。
  • htmx:xhr:progress: 请求期间定期触发。

响应事件

  • htmx:beforeOnLoad: 在交换新内容之前触发。
  • htmx:afterOnLoad: 在交换新内容之后触发。
  • htmx:onLoadError: 交换期间发生错误时触发。

触发事件

  • htmx:trigger: 通过以下方式触发元素时触发HTMX。
  • htmx:validate: 在元素验证之前触发。
  • htmx:validation:validate: 当输入即将被验证时触发。
  • htmx:validation:failed: 当输入验证失败时触发。
  • htmx:validation:halted: 当请求由于验证错误而停止时触发。

WebSocket 和 SSE 事件

  • htmx:wsOpen: 当 WebSocket 连接打开时触发。
  • htmx:wsClose: 当 WebSocket 连接关闭时触发关闭。
  • htmx:wsBeforeMessage: 在处理 WebSocket 消息之前触发。
  • htmx:wsAfterMessage: 在处理 WebSocket 消息之后触发。
  • htmx:sseOpen: 在打开 SSE 连接时触发。
  • htmx:sseMessage: 在收到 SSE 消息时触发。

处理 HTMX 事件

您可以使用标准 JavaScript 事件侦听器侦听 HTMX 事件。

document.body.addEventListener('htmx:afterOnLoad', function(event) {
    console.log('Content loaded!', event.detail.elt);
});

// 或者使用 `htmx.on()` 方法:

htmx.on('htmx:afterOnLoad', function(event) {
    console.log('Content loaded!', event.detail.elt);
});