htmx 响应目标扩展

此扩展允许您指定不同的目标元素,当接收到不同的 HTTP 响应代码时进行交换。

它使用属性名称形式 hx-target-[CODE],其中 [CODE] 是数字 HTTP 响应代码,并在末尾可选使用通配符字符。您也可以使用 hx-target-error,它处理 4xx 和 5xx 响应代码。

每个属性的值可以是:

安装

安装 response-targets 的最快方式是通过 CDN 加载。请记住,始终在扩展之前包含核心 htmx 库,并启用扩展

<head>
    <script src="https://cdn.jsdelivr.net/npm/htmx.org@2.0.7/dist/htmx.min.js" integrity="sha384-ZBXiYtYQ6hJ2Y0ZNoYuI+Nq5MqWBr+chMrS/RkXpNzQCApHEhOt2aY8EJgqwHLkJ" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/htmx-ext-response-targets@2.0.2" integrity="sha384-T41oglUPvXLGBVyRdZsVRxNWnOOqCynaPubjUVjxhsjFTKrFJGEMm3/0KGmNQ+Pg" crossorigin="anonymous"></script>
</head>
<body hx-ext="response-targets">
...

未压缩版本也可从 https://cdn.jsdelivr.net/npm/htmx-ext-response-targets/dist/response-targets.js 获取。

虽然 CDN 方法简单,但您可能需要考虑在生产环境中不使用 CDN。安装 response-targets 的下一个最简单方法是将它复制到您的项目中。从 https://cdn.jsdelivr.net/npm/htmx-ext-response-targets 下载扩展,将其添加到项目中的适当目录,并在需要的地方使用 <script> 标签包含它。

对于 npm 风格的构建系统,您可以通过 npm 安装 response-targets

npm install htmx-ext-response-targets

安装后,您需要使用适当的工具将 node_modules/htmx-ext-response-targets/dist/response-targets.js(或 .min.js)打包。例如,您可以将扩展与来自 node_modules/htmx.org/dist/htmx.js 的 htmx 核心以及项目特定代码打包在一起。

如果您使用打包器管理 JavaScript(例如 Webpack、Rollup):

import `htmx.org`;
import `htmx-ext-response-targets`; 

配置(可选)

使用

以下是一个示例,对于正常(200)响应针对一个 div,对于 404(未找到)响应针对另一个 div,对于所有 5xx 响应代码针对另一个:

<div hx-ext="response-targets">
<div id="response-div"></div>
<button hx-post="/register"
hx-target="#response-div"
hx-target-5*="#serious-errors"
hx-target-404="#not-found">
Register!
</button>
<div id="serious-errors"></div>
<div id="not-found"></div>
</div>

有时您可能不想单独处理 5xx 和 4xx 错误,在这种情况下,您可以使用 hx-target-error

<div hx-ext="response-targets">
<div id="response-div"></div>
<button hx-post="/register"
hx-target="#response-div"
hx-target-error="#any-errors">
Register!
</button>
<div id="any-errors"></div>
</div>

2xx 代码将像前一个示例一样处理。然而,当响应代码为 5xx 或 4xx 时,来自 /register 的响应将替换具有 idany-errorsdiv 的内容。

通配符解析

当状态响应代码不匹配现有的 hx-target-[CODE] 属性名称时,其数字部分表示为字符串,最后一个字符将被替换为星号(*)。此查找过程持续进行,直到找到属性或没有更多数字。

例如,如果浏览器接收到 404 错误代码,将按给定顺序查找以下属性名称:

如果您使用的工具不支持 HTML 属性中的星号,您可以改用 x 字符,例如 hx-target-4xx

注意事项

另请参阅