参考

#目录

#核心属性参考

使用 htmx 时最常用的属性。

属性描述
hx-get发出到指定 URL 的 GET 请求
hx-post发出到指定 URL 的 POST 请求
hx-on*在元素上使用内联脚本处理事件
hx-push-url将 URL 推入浏览器位置栏以创建历史记录
hx-select从响应中选择要交换的内容
hx-select-oob从响应中选择要交换的内容,交换到目标以外的位置(带外)
hx-swap控制内容的交换方式(outerHTMLbeforeendafterend 等)
hx-swap-oob标记要从响应中交换的元素(带外)
hx-target指定要交换的目标元素
hx-trigger指定触发请求的事件
hx-vals添加要随请求一起提交的值(JSON 格式)

#附加属性参考

htmx 中可用的其他所有属性。

属性描述
hx-boost为链接和表单添加渐进增强
hx-confirm在发出请求之前显示 confirm() 对话框
hx-delete发出到指定 URL 的 DELETE 请求
hx-disable禁用给定节点及其所有子节点的 htmx 处理
hx-disabled-elt在请求进行时为指定元素添加 disabled 属性
hx-disinherit控制和禁用子节点的自动属性继承
hx-encoding更改请求的编码类型
hx-ext为此元素使用的扩展
hx-headers添加要随请求一起提交的标头
hx-history防止敏感数据被保存到历史缓存
hx-history-elt在历史导航期间快照和恢复的元素
hx-include在请求中包含额外的数据
hx-indicator在请求期间为元素添加 htmx-request
hx-inherit如果默认情况下已禁用自动属性继承,则控制和启用子节点的自动属性继承
hx-params过滤要随请求一起提交的参数
hx-patch发出到指定 URL 的 PATCH 请求
hx-preserve指定在请求之间保持不变的元素
hx-prompt在提交请求之前显示 prompt()
hx-put发出到指定 URL 的 PUT 请求
hx-replace-url替换浏览器位置栏中的 URL
hx-request配置请求的各个方面
hx-sync控制由不同元素发出的请求的同步方式
hx-validate强制元素在请求之前自行验证
hx-vars动态地向要随请求一起提交的参数中添加值(已弃用,请使用 hx-vals)

#CSS 类参考

类名描述
htmx-added在新内容交换前应用,定居后移除。
htmx-indicator动态生成的类,当存在 htmx-request 类时可见(opacity:1)
htmx-request在请求进行时,应用于元素或指定的 hx-indicator 元素
htmx-settling在内容交换后应用于目标,定居后移除。持续时间可以通过 hx-swap 修改。
htmx-swapping在任何内容交换之前应用于目标,交换后移除。持续时间可以通过 hx-swap 修改。

#HTTP 标头参考

#请求标头参考

标头描述
HX-Boosted表示请求是通过使用 hx-boost 的元素发出的
HX-Current-URL浏览器的当前 URL
HX-History-Restore-Request如果请求是为本地历史缓存丢失后的历史恢复,则为 “true”
HX-Prompt用户对 hx-prompt 的响应
HX-Request总是 “true”
HX-Target如果存在,则为目标元素的 id
HX-Trigger-Name如果存在,则为触发元素的 name
HX-Trigger如果存在,则为触发元素的 id

#响应标头参考

标头描述
HX-Location允许您执行不进行完整页面刷新客户端重定向
HX-Push-Url将新 URL 推送到历史堆栈中
HX-Redirect可用于客户端重定向到新位置
HX-Refresh如果设置为 “true”,客户端将刷新整个页面
HX-Replace-Url替换地址栏中的当前 URL
HX-Reswap允许您指定响应的交换方式。请参阅 hx-swap 获取可能的值
HX-Retarget一个 CSS 选择器,将内容更新的目标更新为页面上的另一个元素
HX-Reselect一个 CSS 选择器,允许您选择响应的哪一部分用于交换。覆盖触发元素上的现有 hx-select
HX-Trigger允许您触发客户端事件
HX-Trigger-After-Settle允许您在定居步骤后触发客户端事件
HX-Trigger-After-Swap允许您在交换

步骤后触发客户端事件

#事件参考

事件描述
htmx:abort向元素发送此事件以中止请求
htmx:afterOnLoad在 AJAX 请求完成处理成功响应后触发
htmx:afterProcessNode在 htmx 初始化节点后触发
htmx:afterRequest在 AJAX 请求完成后触发
htmx:afterSettle在 DOM 定居后触发
htmx:afterSwap在新内容交换后触发
htmx:beforeCleanupElement在 htmx 禁用 元素或将其从 DOM 中移除之前触发
htmx:beforeOnLoad在任何响应处理发生之前触发
htmx:beforeProcessNode在 htmx 初始化节点之前触发
htmx:beforeRequest在发出 AJAX 请求之前触发
htmx:beforeSwap在进行交换之前触发,允许您配置交换
htmx:beforeSend在 ajax 请求发送之前触发
htmx:configRequest在请求之前触发,允许您自定义参数、标头
htmx:confirm在触发元素上的触发器发生后触发,允许您取消(或延迟)发出 AJAX 请求
htmx:historyCacheError在缓存写入期间出现错误时触发
htmx:historyCacheMiss在历史子系统中缓存未命中时触发
htmx:historyCacheMissError在远程检索失败时触发
htmx:historyCacheMissLoad在远程检索成功时触发
htmx:historyRestore在 htmx 处理历史恢复操作时触发
htmx:beforeHistorySave在内容保存到历史缓存之前触发
htmx:load当新内容添加到 DOM 中时触发
htmx:noSSESourceError当元素在其触发器中引用 SSE 事件但未定义父 SSE 源时触发
htmx:onLoadError在 htmx 的 onLoad 处理期间发生异常时触发
htmx:oobAfterSwap在带外元素交换后触发
htmx:oobBeforeSwap在带外元素交换之前触发,允许您配置交换
htmx:oobErrorNoTarget当带外元素在当前 DOM 中没有匹配的 ID 时触发
htmx:prompt在显示提示后触发
htmx:pushedIntoHistory在 URL 被推送到历史记录后触发
htmx:responseError在发生 HTTP 响应错误(非200300响应代码)时触发
htmx:sendError当网络错误阻止 HTTP 请求发生时触发
htmx:sseError在 SSE 源出现错误时触发
htmx:sseOpen在 SSE 源打开时触发
htmx:swapError在交换阶段出现错误时触发
htmx:targetError当指定的目标无效时触发
htmx:timeout在请求超时时触发
htmx:validation:validate在元素验证之前触发
htmx:validation:failed在元素验证失败时触发
htmx:validation:halted在由于验证错误而停止请求时触发
htmx:xhr:abort在 ajax 请求中止时触发
htmx:xhr:loadend在 ajax 请求结束时触发
htmx:xhr:loadstart在 ajax 请求开始时触发
htmx:xhr:progress在支持进度事件的 ajax 请求期间定期触发

#JavaScript API 参考

方法描述
htmx.addClass()为给定元素添加一个类
htmx.ajax()发起一个 htmx 风格的 ajax 请求
htmx.closest()查找与选择器匹配的最近父元素
htmx.config保存当前 htmx 配置对象的属性
htmx.createEventSource保存创建 SSE EventSource 对象的函数的属性
htmx.createWebSocket保存创建 WebSocket 对象的函数的属性
htmx.defineExtension()定义一个 htmx 扩展
htmx.find()查找与选择器匹配的单个元素
htmx.findAll() htmx.findAll(elt, selector)查找所有与给定选择器匹配的元素
htmx.logAll()安装一个记录器,该记录器将记录所有 htmx 事件
htmx.logger设置为当前记录器的属性(默认为 null
htmx.off()从给定元素中移除一个事件监听器
htmx.on()在给定元素上创建一个事件监听器,并返回它
htmx.onLoad()htmx:load 事件添加一个回调处理器
htmx.parseInterval()将一个区间声明解析为毫秒值
htmx.process()处理给定元素及其子元素,挂钩任何 htmx 行为
htmx.remove()移除给定元素
htmx.removeClass()从给定元素中移除一个类
htmx.removeExtension()

移除一个 htmx 扩展 | htmx.swap() | 执行 HTML 内容的交换(和定居) | htmx.takeClass() | 将一个类从其他元素移至给定元素 | htmx.toggleClass() | 在给定元素上切换一个类 | htmx.trigger() | 在元素上触发一个事件 | htmx.values() | 返回与给定元素相关的输入值

#配置参考

Htmx 有一些配置选项,可以通过编程方式或声明方式访问。它们如下所示:

配置变量信息
htmx.config.historyEnabled默认为 true,仅对测试有用
htmx.config.historyCacheSize默认为 10
htmx.config.refreshOnHistoryMiss默认为 false,如果设置为 true,htmx 将在历史记录丢失时进行完整的页面刷新,而不是使用 AJAX 请求
htmx.config.defaultSwapStyle默认为 innerHTML
htmx.config.defaultSwapDelay默认为 0
htmx.config.defaultSettleDelay默认为 20
htmx.config.includeIndicatorStyles默认为 true(确定是否加载指示器样式)
htmx.config.indicatorClass默认为 htmx-indicator
htmx.config.requestClass默认为 htmx-request
htmx.config.addedClass默认为 htmx-added
htmx.config.settlingClass默认为 htmx-settling
htmx.config.swappingClass默认为 htmx-swapping
htmx.config.allowEval默认为 true,可以用于禁用 htmx 对 eval 的使用(例如触发器过滤器)
htmx.config.allowScriptTags默认为 true,决定 htmx 是否会处理新内容中发现的脚本标签
htmx.config.inlineScriptNonce默认为 '',这意味着不会向内联脚本添加 nonce
htmx.config.inlineStyleNonce默认为 '',这意味着不会向内联样式添加 nonce
htmx.config.attributesToSettle默认为 ["class", "style", "width", "height"],在定居阶段要稳定的属性
htmx.config.wsReconnectDelay默认为 full-jitter
htmx.config.wsBinaryType默认为 blob接收的二进制数据类型
htmx.config.disableSelector默认为 [hx-disable], [data-hx-disable],htmx 将不会处理带有此属性的元素或其父元素
htmx.config.withCredentials默认为 false,允许跨站点使用凭据(如 cookies、授权标头或 TLS 客户端证书)进行 Access-Control 请求
htmx.config.timeout默认为 0,请求在自动终止之前可以进行的毫秒数
htmx.config.scrollBehavior默认为 ‘instant’,页面过渡中加速链接的行为。允许的值为 autoinstantsmooth。Instant 将在单次跳转中立即滚动,smooth 将平滑滚动,而 auto 将表现为普通链接。
htmx.config.defaultFocusScroll是否应滚动到视图中的聚焦元素,默认为 false,可以使用 focus-scroll 交换修饰符覆盖。
htmx.config.getCacheBusterParam默认为 false,如果设置为 true,htmx 将在 GET 请求中附加目标元素,格式为 org.htmx.cache-buster=targetElementId
htmx.config.globalViewTransitions如果设置为 true,htmx 将在交换新内容时使用 View Transition API。
htmx.config.methodsThatUseUrlParams默认为 ["get"],htmx 将使用这些方法通过在 URL 中编码其参数而不是请求主体来格式化请求
htmx.config.selfRequestsOnly默认为 true,是否仅允许 AJAX 请求到与当前文档相同的域
htmx.config.ignoreTitle默认为 false,如果设置为 true,htmx 将在新内容中找到 title 标签时不会更新文档标题
htmx.config.scrollIntoViewOnBoost默认为 true,是否将加速元素的目标滚动到视图中。如果加速元素上省略了 hx-target,目标默认为 body,导致页面滚动到顶部。
htmx.config.triggerSpecsCache默认为 null,用于存储已评估触发器规格的缓存,提高解析性能,代价是更多的内存使用。您可以定义一个简单的对象来使用永不清除的缓存,或者使用 代理对象 实现自己的系统。
htmx.config.allowNestedOobSwaps默认为 true,是否处理嵌套在主响应元素内的 OOB 交换。请参阅 嵌套 OOB 交换

您可以直接在 JavaScript 中设置这些选项,或者使用 meta 标签:

<meta name="htmx-config" content='{"defaultSwapStyle":"outerHTML"}'>