事件 - htmx:beforeOnLoad

htmx:beforeOnLoad 是 HTMX 在收到响应数据之后、但在将其插入页面之前触发的事件。如果取消此事件,则不会发生交换。

你可以在此事件中:

  • 修改服务器返回的 HTML 内容;

  • 审查或拦截即将插入页面的内容;

  • 甚至阻止默认插入行为(可调用 event.preventDefault());

事件参数

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

示例:修改要插入的内容

<div id="result"></div>

<button hx-get="/message" hx-target="#result" hx-swap="innerHTML">
  加载消息
</button>

<script>
  document.body.addEventListener("htmx:beforeOnLoad", function (event) {
    // 直接修改服务器返回的内容
    let content = event.detail.content;

    // 比如你想添加一段注释或包裹一下返回内容
    event.detail.content = `<div class="wrapped">${content}<p class="footer">-- 加载完毕 --</p></div>`;

    console.log("修改后的内容:", event.detail.content);
  });
</script>