HTMX 核心属性
使用 htmx 时最常见的属性。
属性 | 描述 |
---|---|
hx-get | 向指定 URL发出 GET 请求 |
hx-post | 向指定 URL发出 POST 请求 |
hx-on* | 使用元素上的内联脚本处理事件 |
hx-push-url | 将 URL 推送到浏览器地址栏以创建历史记录 |
hx-select | 从响应中选择要交换的内容 |
hx-select-oob | 从响应中选择要交换的内容,而不是目标(带外) |
hx-swap | 控制内容如何交换(outerHTML, beforeend, afterend, ... ) |
hx-swap-oob | 标记要从响应中交换的元素(带外) |
hx-target | 指定要交换的目标元素 |
hx-trigger | 指定触发请求的事件 |
hx-vals | 添加要随请求一起提交的值(JSON 格式) |
HTMX 附加属性
所有其他属性均在 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 | 添加到将随请求一起提交的 HTTP 头中 |
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 ) |
HTMX CSS 类
类 | 描述 |
---|---|
htmx-added | 在交换新内容之前应用它,在交换完成后删除。 |
htmx-indicator | htmx-request 动态生成的类,当存在某个类时,它将切换可见性(不透明度:1) |
htmx-request | hx-indicator 在请求正在进行时应用于元素或指定的元素 |
htmx-settling | 内容交换后应用于目标,结算后移除。持续时间可通过 hx-swap 修改。 |
htmx-swapping | 在交换任何内容之前应用于目标,在交换后删除。持续时间可以通过 hx-swap 修改。 |
HTMX 请求头
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(如果存在) |
HTMX 响应头
HTTP头 | 描述 |
---|---|
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 事件
事件 | 描述 |
---|---|
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:beforeTransition | 在视图转换交换发生之前触发 |
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 响应错误(非响应代码200或响应代码300)时触发 |
htmx:sendAbort | 请求中止时触发 |
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 请求期间定期触发 |
HTMX JavaScript API
方法 | 描述 |
---|---|
htmx.addClass() | 为给定元素添加一个类 |
htmx.ajax() | 发出 htmx 样式的 ajax 请求 |
htmx.closest() | 查找与选择器匹配的给定元素的最近父元素 |
htmx.config | 保存当前 htmx 配置对象的属性 |
htmx.createEventSource | 拥有为 htmx 创建 SSE EventSource 对象的功能的属性 |
htmx.createWebSocket | 保存为 htmx 创建 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 有一些配置选项,可以通过编程或声明方式访问。它们列在下面:
配置变量 | 信息 |
---|---|
htmx.config.historyEnabled | 默认为true,实际上只用于测试 |
htmx.config.historyCacheSize | 默认为 10 |
htmx.config.refreshOnHistoryMiss | 默认为false,如果设置为true,将在历史记录未命中时发出整页刷新,而不是使用 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 | 默认为'',意味着不会向内联脚本添加任何随机数 |
htmx.config.inlineStyleNonce | 默认为'',意味着不会将任何随机数添加到内联样式中 |
htmx.config.attributesToSettle | 默认为["class", "style", "width", "height"],在结算阶段要结算的属性 |
htmx.config.wsReconnectDelay | 默认为 full-jitter |
htmx.config.wsBinaryType | 默认为blob,通过 WebSocket 连接接收的二进制数据类型 |
htmx.config.disableSelector | 默认为[hx-disable], [data-hx-disable],htmx 将不会处理具有此属性的元素或其父元素 |
htmx.config.disableInheritance | 默认为 false。如果设置为 true 则完全禁用属性的继承,并且可以使用 hx-inherittrue 属性明确指定继承。 |
htmx.config.withCredentials | 默认为false,允许使用诸如 cookies、授权头或 TLS 客户端证书之类的凭证进行跨站点访问控制请求 |
htmx.config.timeout | 默认为 0,即请求在自动终止前可以花费的毫秒数 |
htmx.config.scrollBehavior | 默认为“instant”,即 hx-swap 使用 show 修饰符时的滚动行为。允许的值为instant(滚动应在一次跳转中立即发生)、smooth(滚动应流畅地进行动画)和(滚动行为由 scroll-behaviorauto 的计算值决定)。 |
htmx.config.defaultFocusScroll | 如果焦点元素应该滚动到视图中,则默认为 false ,并且可以使用焦点滚动交换修改器进行覆盖。 |
htmx.config.getCacheBusterParam | 默认为 false,如果设置为 true,htmx 将以格式将目标元素附加到 GET 请求中 的 org.htmx.cache-buster=targetElementId 格式 |
htmx.config.globalViewTransitions | 如果设置为true,htmx 将在交换新内容时使用 View Transition API。 |
htmx.config.methodsThatUseUrlParams | 默认为["get", "delete"],htmx 将通过在 URL 中编码其参数来格式化使用这些方法的请求,而不是请求正文 |
htmx.config.selfRequestsOnly | 默认为true,是否仅允许对与当前文档相同的域进行 AJAX 请求 |
htmx.config.ignoreTitle | 默认为false,如果设置为 true,则在新内容中发现 title 标签时不会更新文档的标题 |
htmx.config.scrollIntoViewOnBoost | 默认为true,无论增强元素的目标是否滚动到视口中。如果 hx-target 在增强元素上省略,则目标默认为body,且页面滚动到顶部。 |
htmx.config.triggerSpecsCache | 默认为null,用于存储评估的触发器规范的缓存,以更多的内存使用为代价来提高解析性能。你可以定义一个简单的对象来使用永不清除的缓存,或者使用代理对象实现你自己的系统 |
htmx.config.responseHandling | 可以在此处配置响应状态代码的默认响应处理行为,以交换或错误 |
htmx.config.allowNestedOobSwaps | 默认为true,是否处理嵌套在主响应元素中的元素的 OOB 交换。请参阅嵌套 OOB 交换。 |
你可以直接在 javascript 中设置它们,也可以使用meta标签:
<meta name="htmx-config" content='{"defaultSwapStyle":"outerHTML"}'>
HTMX 扩展
htmx 支持扩展,以增强其提供的核心超媒体基础结构。扩展机制减轻了核心库添加新功能的压力,使其能够专注于其主要目的,即推广超媒体控件。
如果你有兴趣为 htmx 创建扩展,请参阅 构建 htmx 扩展。
htmx 扩展分为两类:
- 核心扩展 - 由 htmx 团队支持
- 社区扩展 — 得到更广泛社区的支持
核心扩展
扩展名称 | 描述 |
---|---|
head-support | 提供对 htmx 请求中 head 标签信息(样式等)合并的支持 |
htmx-1-compat | 将 htmx 2 的大部分行为更改回滚到 htmx 1 的默认设置。 |
idiomorph | 提供基于htmx 团队创建的 idiomorph 变形库 morph 的交换策略。 |
preload | 此扩展程序允许你在用户请求 HTML 片段之前将其加载到浏览器的缓存中,以便用户几乎可以立即加载其他页面。 |
response-targets | 此扩展允许你在收到不同的 HTTP 响应代码时指定要交换的不同目标元素。 |
sse | 直接从 HTML 提供对服务器发送事件的支持。 |
ws | 直接从 HTML 提供与 Web Sockets 服务器的双向通信 |
社区扩展
扩展名称 | 描述 |
---|---|
ajax-header | 为 htmx 发出的所有请求添加 X-Requested-With 头 |
alpine-morph | Alpine.js 现在有一个轻量级的 morph 插件,这个扩展允许你将其用作 htmx 中的交换机制,当你通过 htmx 交换整个 Alpine 组件时,这对于保留 Alpine 状态。 |
class-tools | class-tools 扩展允许你使用 classes 或 data-classes 属性指定将在元素上或元素外交换的 CSS 类。 |
client-side-templates | 此扩展支持通过客户端模板将 JSON/XML 请求响应转换为 HTML,然后再交换到 DOM。 |
debug | 此扩展包括通过带 DEBUG: 前缀的函数 console.debug 或 console.log 记录其所在元素的所有 htmx 事件。 |
disable-element | 当在触发请求的元素上配置时此扩展在 htmx 请求期间禁用元素。请注意,此功能现在通过属性 hx-disabled-elt 成为 htmx 核心的一部分 |
event-header | 此扩展将 Triggering-Event 头添加到请求中。HTTP 头的值是触发请求的事件的 JSON 序列化格式。 |
include-vals | 此 include-vals 扩展允许你以编程方式使用 include-vals 属性在请求中包含值。此属性的值是一个或多个名称/值对,它们将被视为 javascript 对象文字中的字段。 |
json-enc-custom | 此扩展的工作原理与 json-enc 类似,但允许非常复杂的结构,例如嵌入 JSON 对象、列表或处理索引,只需使用名称属性即可。 |
json-enc | 此扩展以 JSON 格式而不是 url 格式对参数进行编码。 |
loading-states | 此扩展允许你在请求正在进行时轻松管理加载状态,包括禁用元素以及添加和删除 CSS 类。 |
morphdom-swap | 提供基于morphdom变形库 morph 的交换策略。 |
multi-swap | 此扩展允许你交换 HTML 响应中标记的多个元素。你还可以为每个元素选择应使用的交换方法。 |
no-cache | 此扩展强制 HTMX 绕过客户端缓存并发出新请求。还添加了一个 hx-no-cache 头以允许绕过服务器端缓存。 |
path-deps | 受到 intercooler.js 依赖机制的启发,此扩展支持根据路径表达元素间的依赖关系。 |
path-params | 此扩展使用请求参数来填充路径变量。已使用的参数已被删除,因此它们将不再在查询字符串或正文中发送。 |
remove-me | 允许你在指定的间隔后删除元素。 |
replace-params | 此扩展使用请求参数替换现有参数。如果给定值为空字符串,则参数将被删除。此扩展在你只想替换少数参数而不是重置所有参数、分页、搜索等情况下非常有用,。 |
restored | 使用时检测到后退按钮时触发 hx-boost 事件 |
safe-nonce | 该safe-nonce扩展可用于提高应用程序/网站的安全性,并通过允许你安全地返回已知的受信任内联脚本来帮助避免 XSS 问题 |
signalr | 通过 SignalR 提供双向实时通信。 |
amz-content-sha256 | HTMX 扩展用于与AWS 服务交互时对内容哈希作为数据完整性验证请求的一部分。 |
hx-drag | 该扩展允许 htmx 发送拖放事件 |