事件 - htmx:beforeProcessNode
htmx:beforeProcessNode 是 HTMX 在将服务器返回的 HTML 插入页面之前,准备处理其中的每一个新 DOM 节点时触发的事件。
它是一个低层级的钩子(hook),可以让你:
-
检查每一个即将被插入的节点
-
修改、替换、跳过、清理节点
-
插入你自己的逻辑,比如跳过某些标签或注入自定义数据
事件参数
- detail.elt - 发送请求的元素
示例
忽略特定类名的节点不让它被插入
<button hx-get="/fragment" hx-target="#content" hx-swap="innerHTML">
加载内容
</button>
<div id="content"></div>
<script>
document.body.addEventListener("htmx:beforeProcessNode", function (event) {
const node = event.detail.node;
// 如果节点是包含 .skip 的元素,跳过它,不插入
if (node.nodeType === 1 && node.classList.contains("skip")) {
console.log("跳过插入节点:", node);
event.preventDefault(); // 阻止处理这个节点
}
});
</script>
使用场景
用途 | 示例 |
---|---|
跳过不想插入的元素 | .skip、data-debug-only 等 |
局部 DOM 过滤 | 只保留响应中某些部分 |
插入前预处理 | 替换标签、注入数据、绑定事件 |
调试 HTMX 响应内容 | 控制台逐节点输出 |