jQuery 3.6.1 维护版本发布

发表于

jQuery 3.6.1 已发布!自上次发布以来已经有一段时间了。我们一直在研究修复一些与焦点和模糊相关的难以捉摸的边缘情况,但始终无法完全修复。如果 jQuery 中存在任何难以更改的领域,它可能与焦点有关。目前,我们将这些问题保留原样,并在将来解决,尤其是因为这些更改最终可能需要进行主要版本发布。有关更多详细信息,请参阅 gh-4856gh-4950

也就是说,此版本仍然附带一些重要的修复,详细说明如下。

像往常一样,该版本可在 我们的 CDN 和 npm 包管理器上获取。其他第三方 CDN 可能很快也会提供该版本,但请记住,我们无法控制它们的发布时间表,它们需要一些时间。以下是 jQuery 3.6.1 的亮点

基础设施改进

在此版本中,我们做了很多工作来更新一些测试和构建基础设施,包括将 CI 从 Travis CI 迁移到 GitHub Actions,在 Node 16 而不是 Node 15 上进行测试,通过 https 加载我们的测试监听器,以及为自定义构建添加更准确的测试。我们还从存储库中某些文件中的注释中删除了一些旧链接。这些链接指向现在已被破坏的 URL。虽然这些文件从未在版本中分发,但它们仍然存在于 GitHub 源代码中,现已删除。

不会失去焦点

此版本中仍然 有一个与焦点相关的修复。即使在删除 jQuery 焦点处理程序后,我们针对焦点的特殊事件处理仍然保持附加状态,这会破坏任何随后的手动焦点触发器。例如,

$elem
  .on("focus", function() {})
  .off("focus")
  .trigger("focus");

不会触发焦点。

在 addClass( array ) 中跳过假值

无需任何大小增加,我们 添加了支持 以跳过传递给 addClass removeClass 的数组中的任何假值。

这使得像

elem.addClass( [ "a", "", "b" ] );

这样的代码添加了 ab 类。

与自定义 CSS 属性值的规范保持一致

对 CSS 规范的 更改 要求修剪自定义属性。现在,空格 已修剪,以用于自定义 CSS 属性值。之前,类似于 --prop: value ; 这样的东西将在值中保留前导和尾随空格,返回 ” value “。

使用 HTML 注释追加脚本

在我们的正则表达式中发现了一个问题,它会从脚本中剥离 HTML 注释(当它们被追加时),这最终会在某些边缘情况下删除可执行脚本的一部分。幸运的是,我们的修复是 更多地依赖浏览器,但我们仍然需要在 3.x 分支中为 IE 剥离 CDATA 部分。这将在 4.0 中删除。

jQuery.trim 的性能提升

虽然 jQuery.trim 已经从主分支中删除,以支持为下一个主要版本准备的原生 String#trim,但它仍然在 3.x 分支中需要,因为该分支支持某些浏览器,例如 Android 4.0。由于我们正则表达式的结构,存在某些边缘情况,这些情况极其缓慢。此问题现已解决,速度提升 非常大

升级

从 jQuery 3.0+ 版本升级时,我们预计不会出现兼容性问题。要升级,请查看新的 3.5 升级指南。如果您尚未升级到 jQuery 3+,请先查看 3.0 升级指南

您可以使用 jQuery Migrate 插件 帮助您识别代码中的兼容性问题。请尝试使用此新版本,并 告知我们遇到的任何问题

如果您还无法升级到 3.5+,Daniel Ruf 已经为以前版本的 jQuery 提供了 补丁

下载

您可以从 jQuery CDN 获取文件,或直接链接到它们

https://code.jqueryjs.cn/jquery-3.6.1.js

https://code.jqueryjs.cn/jquery-3.6.1.min.js

您也可以从 npm 获取此版本

npm install jquery@3.6.1

精简版本

有时您不需要 ajax,或者您更喜欢使用专注于 ajax 请求的众多独立库之一。而且,对于网络动画,使用 CSS 和类操作的组合通常更简单。除了包含 ajax 和效果模块的 jQuery 常规版本之外,我们还发布了一个“精简”版本,该版本不包含这些模块。如今,jQuery 的大小很少成为加载性能的顾虑,但精简版本比常规版本压缩后小约 6k 字节。这些文件也在 npm 包和 CDN 上提供

https://code.jqueryjs.cn/jquery-3.6.1.slim.js

https://code.jqueryjs.cn/jquery-3.6.1.slim.min.js

这些更新已作为 npm 和 Bower 上的当前版本提供。有关获取 jQuery 的所有方式的信息,请访问 https://jqueryjs.cn/download/。公共 CDN 今天将收到它们的副本,请给他们几天时间发布文件。如果您急于快速入门,请使用我们 CDN 上的文件,直到他们有机会更新。

感谢

感谢所有通过提交补丁、报告错误或测试参与此版本发布的人,包括 fecore1Richard GibsonSimon LegnerMichal Golebiowski-OwczarekVladimir SitnikovTimo TijhofChristian Oliffygj6 以及整个 jQuery 团队。

变更日志

完整的变更日志:3.6.1

CSS

  • 在 `addClass( array )` 中跳过假值,压缩代码 (#49989b34bdb1)
  • 证明在 curCSS 中使用 rtrim 修剪 CSS 属性值 (a1373e2e)
  • 从 curCSS 中的 rtrimCSS 包含中删除多余的扩展名 (509eeb89)
  • 修剪 CSS 自定义属性值周围的空格 (#4926219ccf5c)

已弃用

  • 改善包含大量空格的字符串的 $.trim 性能 (69940100)

文档

  • 在 README 中更新 webpack 网站 (410d5cf0)
  • 添加指向预览新 CLA 的链接 (b24e83bd)
  • 将 `#NUMBER` Trac 问题引用替换为 `trac-NUMBER` (95e34b69)
  • 从旧 jQuery 源代码中删除已过期的链接 (c3c4d207)
  • 从源代码中删除指向 Web Archive 的链接 (#49814b0d8900)
  • 在 CONTRIBUTING.md 中更新指向最新 jQuery 构建的 URL (4bb7d069)
  • 从拉取请求模板中删除 CLA 复选框 (93406490)

事件

  • 在 `.on(focus).off(focus)` 之后不要破坏焦点触发 (#4867b3e4a7eb)

操作

测试

  • 根据编译标志而不是 API 存在来排除测试(3.x 版本) (#5069bc165128)
  • 解决 Firefox 中的 XML 解析错误 (be3bd560)
  • 将颜色版本锁定到 1.4.0 (fa70e8fd)
  • 在 TestSwarm 上跳过 ETag AJAX 测试 (81fa1e2a)
  • 允许 statusText 在 AJAX 测试中为“success” (7439e221)
  • 在旧版 Safari/iOS 中禁用 CSS 自定义属性测试 (e9f77267)
  • 使 Karma 浏览器超时时间大于 QUnit 超时时间 (a51eec74)
  • 不要在 mock.php 的 cspClean 操作中删除 csp.log (ba81326f)
  • 通过 HTTPS 加载 TestSwarm 监听器 (f6f07204)
  • 将背景图像从在线文件更改为本地 1×1.jpg (8d20cb97)
  • 从 mock.php 中剥离不典型的回调参数字符 (b14b62c8)

基础设施

  • 更新 GitHub Actions (0f6c3d9e)
  • 添加 dependabot.yml 配置(GitHub Actions) (5a363017)
  • 在 Node 17 上进行测试,更新 Grunt 和 `karma-*` 包 (9bc0df70)
  • 在 GitHub Actions 中将安装步骤与运行测试分开 (cb35067f)
  • 从核心代码中删除 travis.yml 和 travis 引用 (#4984) (55669883)
  • 将 CI 迁移到 GitHub Actions (b39cfa15)
  • 在 Node.js 16 而不是 15 上进行测试 (f12cac60)
  • 也从外部目录中获取 core-js (752b8981)
  • 将 3.x-stable 版本更新为 3.6.1-pre。(3642471e)