事件 - htmx:historyCacheMissLoad
htmx:historyCacheMissLoad 是 HTMX 在浏览器前进 / 后退操作中,如果命中的是历史记录 URL,但 HTMX 无法从缓存中恢复该页面状态,于是它会自动从服务器重新加载该 URL 内容,并在加载完成后触发这个事件。
举例说明:
你在使用 hx-push-url="true" 时:
-
点击链接加载 /page1 → 内容加载并缓存
-
点击链接加载 /page2 → 内容加载并缓存
-
刷新或跳转到其他页面 → HTMX 缓存丢失
-
回退到 /page1 → 缓存失效
-
HTMX 从服务器重新加载 /page1
-
加载完毕后触发:htmx:historyCacheMissLoad
事件参数
- detail.xhr - XMLHttpRequest
- detail.path - 正在恢复的页面的路径和查询
与其它历史事件的关系
事件名 | 含义 |
---|---|
htmx:historyCacheMiss | 找不到缓存(触发时还没加载内容) |
htmx:historyCacheMissLoad | 已加载丢失缓存的 URL,并成功插入 |
htmx:replacedInHistory | 页面状态被历史记录替换 |
htmx:pushedIntoHistory | 页面状态被推入历史记录 |
示例代码
<a hx-get="/page1" hx-target="#main" hx-push-url="true">加载 Page 1</a>
<a hx-get="/page2" hx-target="#main" hx-push-url="true">加载 Page 2</a>
<div id="main">
初始内容
</div>
<script>
document.body.addEventListener("htmx:historyCacheMissLoad", function(evt) {
console.log("页面缓存丢失,内容已从服务器重新加载!");
console.log("加载 URL:", evt.detail.path);
});
</script>