事件 - htmx:historyRestore
当 htmx 处理历史记录恢复操作时触发此事件,这个事件只在 HTMX 的历史管理(hx-push-url)启用时生效。
事件参数
- detail.path - 正在恢复的页面的路径和查询
- detail.cacheMiss- 设置true恢复是否为缓存未命中
- detail.serverResponse- 缓存未命中时响应文本被替换
- detail.item- 通过缓存命中恢复的缓存详细信息
示例代码
<body>
<h2>文章列表</h2>
<ul>
<li><a href="/article/1" hx-get="/article/1" hx-target="#content" hx-push-url="true">文章一</a></li>
<li><a href="/article/2" hx-get="/article/2" hx-target="#content" hx-push-url="true">文章二</a></li>
</ul>
<hr>
<div id="content">
<p>点击上面的文章标题加载内容。</p>
</div>
<script>
document.body.addEventListener("htmx:historyRestore", function(evt) {
console.log("历史记录已恢复,当前URL为:", window.location.pathname);
// 可选:显示一个小提示或恢复滚动位置等
});
</script>
</body>
-
用户点击“文章一”,内容加载到 #content 中,URL 变为 /article/1。
-
用户点击“文章二”,内容变为第二篇,URL 变为 /article/2。
-
用户点击浏览器“后退”按钮,回到 /article/1,触发 htmx:historyRestore。
-
控制台输出日志,你也可以做恢复操作。
注意事项
-
htmx:historyRestore 只在你使用了 hx-push-url 时才有意义。
-
如果你不希望 HTMX 接管历史,你可以设置 hx-push-url="false"。
-
事件对象中可以访问到详细信息:evt.detail.path, evt.detail.cacheMiss, 等。