jQuery 4.0.0 BETA!

发布于 作者

jQuery 4.0.0 已经开发了很长一段时间,但现在已经准备好进行 Beta 版本发布了!有很多内容需要介绍,团队很高兴看到它的发布。我们修复了错误,改进了性能,并进行了一些破坏性更改。我们最终移除了对 IE<11 的支持!尽管如此,我们预计破坏性会降到最低。

许多破坏性更改是团队多年来一直希望进行的,但无法在补丁或次要版本中进行。我们精简了遗留代码,删除了之前已弃用的 API,删除了公共函数中从未记录的一些仅限内部使用的参数,并放弃了对一些过于复杂的“魔法”行为的支持。

我们将在最终发布之前发布一份全面的升级指南,以概述已删除的代码以及如何迁移。 jQuery Migrate 插件也将准备就绪以提供帮助。现在,请尝试 Beta 版本并 告知我们您是否遇到任何问题

像往常一样,该版本可在 我们的 CDN 和 npm 包管理器上获得。第三方 CDN 将不会托管此 Beta 版本,但稍后会托管 4.0.0 最终版本。以下是 jQuery 4.0.0 Beta 的一些亮点。

告别 IE<11

jQuery 4.0 停止支持 IE 10 及更早版本。有些人可能想知道为什么我们没有移除对 IE 11 的支持。我们计划分阶段移除支持,下一个步骤 将在 jQuery 5.0 中发布。现在,我们将从移除专门支持 IE 11 之前版本的代码开始,从而减少 867 个 gzip 压缩字节

我们还停止支持其他非常旧的浏览器,包括 Edge Legacy、iOS <11、Firefox <65 和 Android Browser。您无需进行任何更改。如果您需要支持任何这些浏览器,只需坚持使用 jQuery 3.x。

已弃用的 API 已移除

这些函数已经弃用了很多版本。现在是时候 移除它们了,因为我们已经发布了主要版本。这些函数要么一直打算用于内部,要么现在在所有受支持的浏览器中都有原生等效项。被移除的函数是

pushsortsplice 已移除

jQuery 原型长期以来一直拥有行为与任何其他 jQuery 方法不同的数组方法,并且始终仅用于内部用途。这些方法是 pushsortsplice。我们切换到使用数组函数而不是 jQuery 原型来使用这些方法。例如,$elems.push( elem ) 变成了 [].push.call( $elems, elem )。我们在此处提及,以防有任何插件可能依赖这些方法。

focusinfocusout 事件顺序

长期以来,浏览器对焦点和模糊事件的顺序存在分歧,包括 focusinfocusoutfocusblur。最终,所有 jQuery 4.0 支持的浏览器的最新版本都已收敛到通用的事件顺序。不幸的是,这与 jQuery 多年来选择的顺序不同,这导致了破坏性更改。至少现在每个人都在同一页面上了!

jQuery 在先前版本中对所有四个事件的顺序是

1. focusout
2. blur
3. focusin
4. focus

从 jQuery 4.0 开始,我们 不再覆盖原生行为。这意味着除了 IE 之外的所有浏览器都将遵循当前的 W3C 规范,即

1. blur
2. focusout
3. focus
4. focusin

对于那些好奇的人来说,W3C 规范先前定义了不同的顺序

1. focusout
2. focusin
3. blur
4. focus

但是,很少有人认为它直观并且 规范2023 年 被更改为与浏览器已经实现的内容相匹配。具有讽刺意味的是,唯一遵循旧规范的浏览器是 Internet Explorer。

FormData 支持

jQuery.ajax添加对二进制数据(包括 FormData)的支持。 以前,二进制数据不是已知的数据类型,并且被转换为字符串。可以通过禁用数据转换并手动处理数据来禁用该行为,但我们决定使其自动工作。从技术上讲,这是一个破坏性更改,但应该更接近预期的行为。

自动 JSONP 提升已移除

以前,带有 dataType: "json" 和提供的回调的 jQuery.ajax 会被转换为 JSONP 请求。如今,与跨域后端交互的首选方式是使用 CORS,这在 jQuery 4.0 支持的所有浏览器中都有效。这应该有助于避免在开发人员不知道可以通过 JSONP 从远程域执行代码的情况下发生意外行为。

jQuery 源代码迁移到 ES 模块

main 分支上的 jQuery 源代码从 AMD 迁移到 ES 模块 时,这是一个特殊的日子。jQuery 源代码一直与 jQuery 发布一起发布在 npm 和 GitHub 上,但无法直接作为模块导入,除非使用 RequireJS,这是 jQuery 的构建工具。我们现在已经切换到 Rollup 来打包 jQuery,并且我们单独运行所有测试的 ES 模块。

Trusted Types 和 CSP

jQuery 4.0 添加了对 Trusted Types 的支持,确保包装在 TrustedHTML 中的 HTML 可以用作 jQuery 操作方法输入的输入,而不会违反 require-trusted-types-for 内容安全策略指令。

与此同时,虽然一些 AJAX 请求已经使用 <script> 标签来维护诸如 crossdomain 之类的属性,但我们已经 将大多数异步脚本请求切换为使用 <script> 标签,以避免因使用内联脚本而引起的任何 CSP 错误。仍然存在一些使用 XHR 进行异步脚本请求的情况,例如当传递 "headers" 选项时(改用 scriptAttrs!),但我们现在尽可能使用 <script> 标签。

更新精简版构建

在 jQuery 4.0.0 中,精简版本变得更小了,移除了 Deferreds 和 Callbacks(现在 gzip 压缩后低于 20k 字节!)。Deferreds 长期以来一直支持 Promises A+ 标准,因此在大多数情况下可以使用原生 Promises 代替,并且它们在 jQuery 的所有受支持的浏览器中都可用。Deferreds 具有原生 Promises 不支持的一些额外功能,但大多数用法可以迁移到 Promise 方法。如果您需要支持 IE11,最好使用主版本或为原生 Promises 添加 polyfill。

下载

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

https://code.jqueryjs.cn/jquery-4.0.0-beta.js

https://code.jqueryjs.cn/jquery-4.0.0-beta.min.js

您也可以从 npm 获取此版本

npm install jquery@4.0.0-beta

精简版

有时您不需要 ajax,或者更喜欢使用许多独立的专注于 ajax 请求的库。而且,通常使用 CSS 和类操作进行 Web 动画更简单。最后,所有 jQuery 支持的浏览器(IE11 除外)现在都支持本机 Promises,因此在大多数情况下不再需要 Deferreds 和 Callbacks。除了包含所有内容的常规 jQuery 版本之外,我们还发布了一个排除这些模块的“精简”版本。这些天 jQuery 的大小很少成为加载性能问题,但精简版本比常规版本小约 8k gzip 字节。这些文件也可用在 npm 包和 CDN 上

https://code.jqueryjs.cn/jquery-4.0.0-beta.slim.js

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

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

感谢

感谢所有参与本次发布的人员,他们提交了补丁、报告了错误或进行了测试,包括 AlexAhmed S. El-Afififecore1Dallas FraserRichard GibsonMichał Gołębiowski-OwczarekPierre GrimaudGabriela GutierrezJonathanNecmettin KarakayaAnders KaseorgWonseop KimSimon LegnerShashanka NatarajPat O’CallaghanChristian OliffDimitri Papadopoulos OrfanosWonhyoung ParkBruno PIERREBaoshuo RenBeatriz RezenerSean RobinsonEd SandersTimo TijhofTomChristian Wenzygj6 以及整个 jQuery 团队。

我们在 Mastodon 上!

jQuery 现在拥有自己的 Mastodon 帐户。从现在开始,我们将同时在 Twitter 和 Mastodon 上发布内容。您可能还对关注一些拥有 Mastodon 帐户的团队成员感兴趣。

jQuery: https://social.lfx.dev/@jquery

mgol: https://hachyderm.io/@mgol

timmywil: https://hachyderm.io/@timmywil

变更日志

完整变更日志: 4.0.0-beta

Ajax

  • 不要将数组数据视为二进制数据 (992a1911)
  • 即使对于二进制数据,也允许 `processData: true` (ce264e07)
  • 支持二进制数据(包括 FormData)(a7ed9a7b)
  • 支持带有 headers 的脚本传输,即使是跨域请求 (#5142, 6d136443)
  • 支持 `jQuery.get` 中成功函数的 `null` 值 (#4989, 74978b7e)
  • 除非提供了 dataType,否则不要自动执行脚本 (#4822, 025da4dd)
  • 使 responseJSON 适用于错误的同域 JSONP 请求 (68b4ec59)
  • 执行 JSONP 错误脚本响应 (#4771, a1e619b0)
  • 避免异步请求的脚本传输中的 CSP 错误 (#3969, 07a8e4a1)
  • 放弃 json 到 jsonp 的自动提升逻辑 (#1799, #3376, e7b3bc48)
  • 如果存在 content-type 标头值,则覆盖 s.contentType (#4119, 7fb90a6b)
  • 弃用 AJAX 事件别名,将内联别名弃用 (23d53928)
  • 不要为不成功的 HTTP 响应执行脚本 (#4250, 50871a5a)
  • 简化 jQuery.ajaxSettings.xhr (#1967, abdc89ac)

属性

  • 减少几个字节 (b40a4807)
  • 不要在 setter 中将属性字符串化 (#4948, 4250b628)
  • 移除 `toggleClass(boolean|undefined)` 签名 (#3388, a4421101)
  • 重构 val(): 不要剥离回车符,隔离 IE 解决方法 (ff281991)
  • 不在 IE 之外设置 type attr hook (9e66fe9a)

构建

  • 设置定期代码扫描分析 (39c5778c)

构建

  • 将 grunt 作者迁移到自定义脚本 (af79c999)
  • 将 follow-redirects 从 1.15.1 升级到 1.15.4 (56139394)
  • 升级 actions/setup-node 和 github/codeql-action (99151d7a)
  • 重新格式化 GitHub workflow Yaml 文件 (c98597ea)
  • 升级 @babel/traverse 和多个 actions (fb0cc272)
  • 不要为 dependabot 分支运行 CI push 工作流 (635cb152)
  • 更新 ESLint 相关包,修复 linting 错误 (f47c6a83)
  • 在 npm 脚本中运行 pretest 之前运行 pretest (* (1ad66aeb)
  • 对 compare_size 中的分支进行排序;最后运行的排在最后 (a7fa303f)
  • 在 jenkins 脚本中运行 pretest (cb763072)
  • 修复 Node 20 中不一致的构建 (7ef9099d)
  • 在比较中添加提交 SHA 和最后运行时间 (09972bcc)
  • 将新的 factory 文件添加到 dist eslint (79223841)
  • 升级 qs、socket.io-parser、socket.io 和 json5 (b923047d)
  • 将大多数 grunt 任务迁移到 grunt 之外 (2bdecf8b)
  • 升级 actions/checkout、actions/setup-node 和 github/codeql-action (42e50f8c)
  • 更新 Krinkle 的 mailmap 条目 (699bcd39)
  • 在压缩期间将 CRLF 替换为 LF (48cc402a)
  • 向 package.json 添加 `exports`,导出 slim 和 esm 构建 (#4592, 8be4c0e4)
  • 切换到 SWC 进行 JS 压缩,而不是 Terser (#5286) (#5285, e2421875)
  • 确保 `*.cjs` 和 `*.mjs` 文件也使用 UNIX 行尾 (198b41c8)
  • 切换 timmywil 的首选电子邮件 (2b6b5e0a)
  • 升级 github/codeql-action 和 actions/checkout (4a13266e)
  • 删除单个 AMD 模块 (5701957b)
  • 通过提交 SHA 引用 GitHub Actions (#5266, 784b9ba6)
  • 将 minifier 从 UglifyJS 切换到 Terser (27303c6b)
  • 使 `eslint:dev` 任务不 lint `dist/` 文件夹 (44906a83)
  • 在 Node.js 20 上进行测试,停止在 Node.js 14 和 19 上进行测试 (6616acff)
  • 仅在需要时安装 Playwright 依赖项 (e77bd9d6)
  • 将 actions/setup-node 从 3.5.1 升级到 3.6.0 (7e7bd062)
  • 在 GitHub Action 浏览器测试上运行 Playwright WebKit (b02a257f)
  • 将 middleware-mockserver 迁移到现代 JS (ce90a484)
  • 删除自定义构建中过时的 Insight 包 (c66d4700)
  • 限制 GitHub 工作流的权限 (c909d6b1)
  • 在 Node.js 18 和 19 上进行测试,停止在 Node 12 上进行测试 (f62d8e21)
  • 将 actions/setup-node 从 3.5.0 升级到 3.5.1 (0208224b)
  • 更新 Grunt 从 1.4.1 到 1.5.3 (aa231cd2)
  • 将 actions/setup-node 从 3.4.1 升级到 3.5.0 (25400750)
  • 更新 GitHub Actions (52f452b2)
  • 添加 dependabot.yml 配置 (GitHub Actions) (3f8bb2a4)
  • 在 Node 17 上进行测试,更新 Grunt 和 `karma-*` 包 (2525cffc)
  • 在 GitHub Actions 中将安装步骤与运行测试分开 (eef97250)
  • 删除 travis.yml 和核心中的 travis 提及 (#4983) (5f4d449a)
  • 迁移到 GitHub Actions (e23190e6)
  • 更新 ESLint 和 eslint-plugin-import,修复构建 (9735edd5)
  • 在 Node.js 16 上进行测试,而不是 15 (0f623fdc)
  • 从外部目录获取 core-js-bundle (345cd22e)
  • 恢复外部目录 (a684e6ba)
  • 在整个存储库中将 master 重命名为 main (8ae477a4)
  • 在 Node.js 15 上进行测试 (6984d174)
  • 明确排除 slim 构建中的 queue 模块 (a503c691)
  • 使 import/no-unused-modules ESLint 规则在 WebStorm 中工作 (8612018d)
  • 将 .eslintignore 路径附加到 grunt eslint 路径 (a22b43ba)
  • 使用“favor”的美国拼写 (fa0058af)
  • 修复 commitplease husky 配置 (#4735, 3a1b338a)
  • 更新依赖项 (b5028669)
  • 事件:确保使用所有源模块的导出 (#4648) (40c3abd0)
  • 更新 eslint-config-jquery,修复 linting 违规 (ef4d6ca6)
  • 在引入通过 Rollup 编译的 ES 模块后的后续操作 (55cd3a44)
  • 根据 jQuery 风格指南更正代码缩进 (3d62d570)
  • 减少 slim 构建的标题注释和 jQuery.fn.jquery (812b4a1a)
  • 将 ESLint max-len disable-directive 移动到 dist/.eslintrc.json (34296ec5)
  • 在 Node.js 14 上进行测试,停止在 Node.js 8 和 13 上进行测试 (88eb22e0)
  • 在 ESLint 中启用 reportUnusedDisableDirectives (46f9810b)
  • 解决 Travis 配置警告 (5b94a4f8)
  • 为浏览器代码中的 var 声明启用 ESLint one-var 规则 (4a7fc854)
  • 将 Christian Oliff 添加到 .mailmap 和 AUTHORS.txt (721744a9)
  • lint 压缩的 jQuery 文件,以及一个 Gruntfile 修复 (#3075, 338f1fc7)
  • lint 压缩的 jQuery 文件 (#3075, 89a18de6)
  • 为 Travis 作业添加直观的名称 (e1fab109)
  • 使 Karma 在 ES 模块模式下工作,从磁盘提供源文件 (437f389a)
  • 测试:修复自定义构建测试,在 Travis 上验证 (0f780ba7)
  • 创建一个 `grunt custom:slim` 别名用于 Slim 构建 (#4578) (9b9ed469)
  • 使 Karma 在 ES 模块模式下工作 (341c6d1b)
  • 自动转换为 AMD (f37c2e51)
  • 修复 Windows 构建 (#4548, 9fd2fa53)
  • 需要 ES6 导入的扩展名,防止导入循环 (44ac8c85)
  • 修复 ajax.js 中对 serialize.js 的导入路径 (07532014)
  • 仅在 Travis 上定义的浏览器中运行测试 (bcbcdd2b)
  • 在 Firefox ESR 上运行测试 (2d5ad6d2)
  • 除了 8、10 和 12 之外,还在 Node.js 13 上运行测试 (830976e6)
  • 在 Travis 上使用 FirefoxHeadless 运行测试 (584835e6)
  • 通过 ESLint 要求 Node.js 脚本使用严格模式 (bbad821c)
  • 支持 jquery-release –dry-run 标志 (d7d0b52b)
  • 停止在发布时将 src/core.js 复制到 dist (#4489, 9a4d9806)
  • 移除 external 目录,直接从 node_modules 读取 (d7e64190)
  • ESLint:禁止使用未使用的函数参数 (438b1a3e)
  • 修复 AMD 模块的正则表达式解析 (#4389) (9ec09c3b)
  • 修复 curCSS 中的 AMD 依赖项 (b220f6df)
  • 在 Node.js 12 上测试,停止在 Node.js 6 和 11 上测试 (b8d47128)
  • 修复 finalPropName 中的未解析 jQuery 引用 (#4358, 87403058)
  • 将 Sizzle 从 2.3.3 更新到 2.3.4 (#1756, #4170, #4249, 0b2c36ad)
  • 将 master 版本更新到 4.0.0-pre (c4f2fa2f)
  • 将 Sinon 从 2.3.7 更新到 7.3.1,其他更新 (fea7a2a3)

核心

  • 添加有关命名导出的更多信息 (5f869590)
  • 简化浏览器支持减少后的代码 (93ca49e6)
  • 将工厂移动到单独的导出 (46f6e3da)
  • 在 `src/` 中使用命名导出 (#5262, f75daab0)
  • 修复 HTMLDocument 对象上 jQuery.text() 的回归 (#5264, a75d6b52)
  • 选择器:将 jQuery.contains 从选择器移动到核心模块 (024d8719)
  • 移除 jQuery.fn.init 的根参数 (d2436df3)
  • 不要依赖 splice 存在于输入中 (9c6f64c7)
  • 操作:添加基本的 TrustedHTML 支持 (#4409, de5398a6)
  • 报告 parseXML 中的浏览器错误 (#4784, 89697325)
  • 使 jQuery.isXMLDoc 接受 falsy 输入 (#4782, fd421097)
  • 停止支持 Edge Legacy(即非 Chromium Microsoft Edge) (#4568, e35fb62d)
  • 在 iframe 上下文中触发 iframe 脚本,在 globalEval 中添加 doc 参数 (#4518, 4592595b)
  • 在精简版本中排除 callbacks & deferred 模块 (fbc44f52)
  • 迁移到 ES 模块 🎉 (d0ce00cd)
  • 在支持的地方使用 Array.prototype.flat (#4320, 9df4f1de)
  • 移除 jQuery 原型上的 push、sort & splice 的私有副本 (b59107f5)
  • 实现 .even() & .odd() 以替换 POS :even & :odd (78420d42)
  • 弃用 jQuery.trim (#4363, 5ea59460)
  • 移除 IE 特定的支持测试,依赖 document.documentMode (#4386, 3527a384)
  • 停止支持 IE <11、iOS <11、Firefox <65、Android Browser & PhantomJS (#3950, #4299, cf84696f)
  • 移除已弃用的 jQuery API (#4056, 58f0c00b)

CSS

  • 修复最初隐藏的 iframe 的 reliableTrDimensions 支持测试 (b1e66a5f)
  • 选择器:与 3.x 对齐,移除外部 `selector.js` 包装器 (53cf7244)
  • 使 reliableTrDimensions 支持测试与 Bootstrap CSS 协同工作 (#5270, 65b85031)
  • 使 `offsetHeight( true )` 等包含负边距 (#3982, bce13b72)
  • 对于仅包含空格的 CSS 变量值返回 `undefined` (#5120) (7eb00196)
  • 不要修剪未定义的自定义属性的空格 (ed306c02)
  • 跳过 `addClass( array )` 中的假值,压缩代码 (#4998, a338b407)
  • 证明在 CSS 属性值上使用 rtrim 的合理性 (655c0ed5)
  • 修剪 CSS 自定义属性值周围的空格 (#4926, efadfe99)
  • 在 jQuery slim 构建中包含 `show`、`hide` 和 `toggle` 方法 (297d18dd)
  • 移除 opacity CSS hook (865469f5)
  • 解决 IE/Edge 中表行上 getComputedStyle 的错误 (4490, 26415e08)
  • 不要自动将“px”添加到少数例外情况下的属性 (#2795, 00a9c2e5)

数据

  • 重构以减小尺寸 (805cdb43)
  • 事件:操作:防止与 Object.prototype 发生冲突 (3256, 9d76c0b1)
  • 分离 data & css/effects camelCase 实现 (3355, 8fae2120)

Deferred

  • 将 `getStackHook` 重命名为 `getErrorHook` (#5201, 258ca1ec)
  • 尊重 jQuery.Deferred.exceptionHook 中的 source maps (#3179, 0b9c5037)
  • 将 master 重命名为 primary (a32cf632)

已弃用

  • 使用非弃用方法定义 `.hover()` (fd6ffc5e)
  • 移除 jQuery.trim (0b676ae1)
  • 修复 AMD 参数顺序 (f810080e)

Dimensions

  • 为不可靠的 TR 尺寸添加偏移量属性回退 (4529, 3bbbc111)

文档

  • 修复程序包 README 中的模块链接 (ace646f6)
  • 更新 CONTRIBUTING.md 中的 watch 任务 (77d6ad71)
  • 修复 codespell 发现的错别字 (620870a1)
  • 移除过时的 gitter 徽章 (67cb1af7)
  • 从 PR 模板中移除“Grunt 构建”部分 (988a5684)
  • 移除 README 中的过时徽章 (bcd9c2bc)
  • 更新已发布程序包的 README (edccabf1)
  • 移除来自 GitHub Actions 注释中的 git.io (016872ff)
  • 更新 README 中的 webpack 网站 (01819bc3)
  • 添加指向 patchwelcome 和 help wanted issue 的链接 (924b7ce8)
  • 添加指向预览新 CLA 的链接 (683ceb8f)
  • 修复不正确的 `trac-NUMBER` 引用 (eb9ceb2f)
  • 移除旧 jquery 源代码中的过期链接 (#4997) (ed066ac7)
  • 移除来自源代码的 Web Archive 链接 (#4981, e24f2dcf)
  • 将 `#NUMBER` Trac 问题引用替换为 `trac-NUMBER` (5d5ea015)
  • 更新 CONTRIBUTING.md 中最新的 jQuery 构建的 URL (9bdb16cd)
  • 移除拉取请求模板中的 CLA 复选框 (e1248931)
  • 更新 IRC 到 Libera 并修复 LAMP 死链接 (175db73e)
  • 更新 GitHub issue 模板中的“频繁报告的问题” (7a6fae6a)
  • 将 JS Foundation 提及更改为 OpenJS Foundation (11611967)
  • 添加 SECURITY.md,显示安全电子邮件地址 (2ffe54ca)
  • 修复错别字 (1a7332ce)
  • 更新 jsdom 仓库的链接 (a62309e0)
  • 将超链接使用 https (73415da2)
  • 移除 README 中 event/alias.js 模块的提及 (3edfa1bc)
  • 将指向 EdgeHTML issue 的链接通过 Web Archive (1dad1185)
  • 将用户引导至 GitHub 文档以克隆仓库 (f1c16de2)
  • 将 README 中的 OS X 更改为 macOS (5a3e0664)
  • 将大多数 URL 更新为 HTTPS (f09d9210)
  • 将指向 Homebrew 的链接从 HTTP 转换为 HTTPS (e0022f23)

效果

  • 修复 .stop() 中的不必要的条件语句 (#4374, 110802c7)

Effects

  • 移除 jQuery.fx.interval (6c2c7362)

事件

  • 避免 jQuery.event.special 与 Object.prototype 之间的冲突 (bcaeb000)
  • 简化 leverageNative 中已保存数据的检查 (dfe212d5)
  • 使 trigger(focus/blur/click) 与原生处理程序协同工作 (#5015, 6ad3651d)
  • 通过 focusin/focusout 在 IE 中模拟 focus/blur (#4856, #4859, #4950, ce60d318)
  • 不要在 `.on(focus).off(focus)` 之后中断 focus 触发 (#4867, e539bac7)
  • 使 focus 重新触发不将原始元素重新聚焦 (#4382, dbcffb39)
  • 不要在元素在 blur 时被移除时崩溃 (#4417, 5c2d0870)
  • 移除 event.which shim (#3235, 1a5fff4c)
  • 移除 jQuery.event.global (18db8717)
  • 仅将事件附加到接受数据的对象 – 真正地 (#4397, d5c505e3)
  • 停止 shim focusin 和 focusout 事件 (#4300, 8a741376)
  • 防止 leverageNative 注册重复的虚拟处理程序 (eb6c0a7c)
  • 修复处理多个异步 focus 事件 (#4350, ddfa8376)

操作

  • 泛化一个测试以支持 IE (88690ebf)
  • 支持 $el.html(selfRemovingScript) (#5378) (#5377, 937923d9)
  • 将 domManip 提取到单独的文件 (ee6e8740)
  • 不要从脚本中移除 HTML 注释 (#4904, 2f8f39e4)
  • 在 DOM 操作中尊重脚本 crossorigin 属性 (#4542, 15ae3614)
  • 避免在 buildFragment 中连接字符串 (9c98e4e8)
  • 使 jQuery.htmlPrefilter 成为一个恒等函数 (90fed4b4)
  • 选择器:尽可能使用 nodeName 工具来节省大小 (4504fc3d)

发布

  • 直接使用 buildDefaultFiles 并传递版本 (b507c864)
  • 复制 dist-module 文件夹 (63767650)
  • 仅将已发布版本的文件发布到 cdn (3a0ca684)
  • 移除 dist package.json 中的脚本和开发依赖项 (7eac932d)
  • 更新 Release.generateArtifacts 中的构建命令 (3b963a21)
  • 添加对 Windows 中 md5 总和的支持 (f088c366)
  • 移除全局安装 grunt 的需要 (b2bbaa36)
  • 更新发布依赖项 (967af732)
  • 移除未使用的 chalk 依赖项 (bfb6897c)
  • 使用仓库中的 dist README fixture (358b769a)
  • 更新 AUTHORS.txt (1b74660f)
  • 更新 AUTHORS.txt (cf9fe0f6)

选择器

  • 使 `selector.js` 模块依赖于 `attributes/attr.js` (#5379, e06ff088)
  • 消除来自各种模块的 `selector.js` 依赖项 (e8b7db4b)
  • 重新暴露 jQuery.find.{tokenize,select,compile,setDocument} (#5259, 338de359)
  • 停止依赖 CSS.supports( “selector(…)” ) (#5194, 68aa2ef7)
  • 将 jQuery 选择上下文逻辑回溯到 selector-native (#5185, 2e644e84)
  • 使选择器列表再次与 `qSA` 协同工作 (#5177, 09d988b7)
  • 实现 `uniqueSort` 可链式方法 (#5166, 5266f23c)
  • 重新引入 selector-native.js (4c1171f2)
  • 操作:修复模板内容中的 DOM 操作 (#5147, 3299236c)
  • 移除旧版伪类的支持,测试自定义伪类 (8c7da22c)
  • 如果 `CSS.supports(selector(…))` 不兼容,则使用 jQuery `:has` (#5098, d153c375)
  • 移除 Chrome <=77 的“a:enabled”解决方法 (c1ee33ad)
  • 再次使空属性选择器在 IE 中工作 (#4435, 05184cc4)
  • 在 uniqueSort 中使用浅层文档比较 (#4441, 15750b0a)
  • 添加一个测试,用于在逗号后的无效选择器上引发错误 (6eee5f7f)
  • 使带有前导组合器的选择器再次使用 qSA (ed66d5a2)
  • 使用浅层文档比较以避免 IE/Edge 崩溃 (#4441, aa6344ba)
  • 减小大小,简化 setDocument (29a9544a)
  • 尽可能利用 `:scope` 伪类 (#4453, df6a7f7f)
  • 恢复 querySelectorAll 快捷方式的使用 (cef4b731)
  • 将 Sizzle 内联到选择器模块 (47835965)
  • 将 Sizzle 测试移植到 jQuery (79b74e04)

支持

Tests

  • 禁用“:lang 尊重转义的反斜杠”测试 (#5271, 62b9a258)
  • 指示 Chrome 112 和 Safari 16.4 通过 cssHas 支持测试 (89ef81f8)
  • 正确测试 AJAX 弃用事件别名 (cff28998)
  • 指示 Firefox 106+ 通过 `cssSupportsSelector` 测试 (716130e0)
  • 移除 Firefox XML 解析问题的一个解决方法 (e7ffe1f1)
  • 修复 QUnit CSS 文件的链接 (8cf39b78)
  • 根据编译标志而非 API 存在性排除测试 (#5069, fae5fee8)
  • 解决 Firefox 中的 XML 解析错误 (af1cd6f2)
  • 将 colors 版本锁定到 1.4.0 (9603b3c8)
  • 在 TestSwarm 上跳过 ETag AJAX 测试 (00c060d1)
  • 允许 statusText 在 AJAX 测试中为“success” (19ced963)
  • 使 Karma 浏览器超时大于 QUnit 的超时 (4fd6912b)
  • 不要在 mock.php 的 cspClean 操作中移除 csp.log (1019074f)
  • 通过 HTTPS 加载 TestSwarm 监听器 (d225639a)
  • 将背景图像从在线文件切换为本地 1×1.jpg (482f8462)
  • 移除 mock.php 中非典型的回调参数字符 (a7027463)
  • 让更多测试在 Chrome 和 Firefox 中原生运行 (50e8e846)
  • 修复没有 dataType 的脚本不自动执行的测试 (d38528b1)
  • 识别 Node.js 模拟服务器中的带有点的回调 (df6858df)
  • 在 Safari 中跳过“jQuery.ajax() 在卸载时”测试 (c18dc496)
  • 移除未使用的局部变量 (82b87f6f)
  • 移除剩余过时的 jQuery.cache 引用 (d96111e1)
  • 解决 iOS 8 – 12 中最近的 XSS 测试中的失败 (11066a9e)
  • 添加针对最近修复的操纵 XSS 问题的测试 (dc06d68b)
  • 仅对匹配的窗口和文档使用一个 focusin/out 处理程序 (9b732043)
  • 修复“jQuery.ajax() – JSONP – 同域”测试中的不稳定性 (7b0864d0)
  • 将多个必要的 done() 调用传递给 assert.async() (364476c3)
  • 移除过时的 jQuery data 测试 (eb35be52)
  • 在 Firefox 中跳过“表格行上宽度/高度,具有幻影边框”测试 (a612733b)
  • 不要在 Chrome 中测试卸载时的同步 XHR (323575fb)
  • 停止在测试中使用 jQuery.find (1d624c10)
  • 移植 Sizzle 中的更改 (ac5f7cd8)
  • 修复 testinit.js 中的注释 (7bdf307b)
  • 更新 npo.js 并包含未压缩的源代码 (b334ce77)
  • 将事件测试回退限制为 TestSwarm (bde53edc)
  • 修复 IE 中的新 focusin/focusout 测试 (6f2fae7c)
  • 修复 core-js polyfill 包含方法 (2e4b79ab)

Traversing

  • 修复 IE 中带有子元素的 <object> 上的 `contents()` (ccbd6b93)
  • 修复带有子元素的 <object> 上的 `contents()` (#4384, 4d865d96)