事件 - htmx:beforeHistoryUpdate
htmx:beforehistoryupdate 是 HTMX 中一个高级事件,它在浏览器历史记录将被更新之前触发,允许你在该时刻查看或修改即将写入的历史状态(如更新历史记录的 path 或 type等)。
事件参数
- detail.history - 用于历史更新的 path 和 type(push, replace)
- detail.elt - 发送请求的元素
- detail.xhr - XMLHttpRequest
- detail.target - 请求的目标
- detail.requestConfig - AJAX请求的配置
示例:监控并打印历史记录变化
<button
hx-get="/page1"
hx-push-url="true"
hx-target="#content"
>
加载页面 1
</button>
<div id="content"></div>
<script>
document.body.addEventListener("htmx:beforehistoryupdate", function (event) {
console.log("即将更新历史记录:", event.detail);
// 可以修改 URL 或状态对象:
// event.detail.path = "/custom-path";
// event.detail.state = { myCustomState: true };
// 或取消 pushState 行为
// event.preventDefault();
});
</script>
示例:阻止某个页面进入历史记录
document.body.addEventListener("htmx:beforehistoryupdate", function (event) {
if (event.detail.path === "/login") {
event.preventDefault(); // 不写入浏览器历史
}
});