hx-history-elt

hx-history-elt 属性允许你指定在导航期间将用于快照和恢复页面状态的元素。默认情况下,使用 body 标签。对于大多数设置来说,这通常已经足够好了,但你可能想把它缩小到子元素。只需确保该元素在你的应用程序中始终可见,否则 htmx 将无法正确恢复历史导航。

指定某个元素为历史记录的来源(source of history snapshot),HTMX 会从这个元素中获取 HTML 片段用于浏览器的前进/后退导航恢复。

hx-history-elt不会被继承,通常情况下,不建议缩小历史快照范围。

工作原理

  • HTMX 会监听 popstate;

  • 找到设置了 hx-history-elt 的元素;

  • 只替换它的 innerHTML,不会影响其他部分(如导航栏、脚本等)。

示例代码

<div id="main-content" hx-history-elt>
  <div hx-get="/page1" hx-push-url="true" hx-target="#main-content">
    加载页面内容
  </div>
</div>

你点击加载内容时,会通过 HTMX 发起请求,HTMX 会把 #main-content 的当前 HTML 片段保存到浏览器历史中。当你使用浏览器的前进或后退按钮时,只会恢复这个元素的内容。