2006年1月14日,John Resig 在纽约市的 BarCamp 上推出了一款名为 jQuery 的 JavaScript 库。现在,20年后,jQuery 团队很高兴地宣布 jQuery 4.0.0 的最终版本。经过漫长的开发周期和几个预发布版本,jQuery 4.0.0 带来了许多改进和现代化。这是近10年来首次发布的主要版本,包含了一些破坏性更改,因此请务必在升级之前仔细阅读以下详细信息。尽管如此,我们预计大多数用户都可以通过对代码进行最少的更改来升级。
许多破坏性更改是团队多年来一直希望进行的,但无法在补丁或次要版本中进行。我们精简了遗留代码,删除了之前已弃用的 API,删除了公共函数中从未记录的一些仅限内部使用的参数,并放弃了对一些过于复杂的“魔法”行为的支持。
我们准备了 升级指南 和 jQuery Migrate 插件发布 来协助过渡。请升级并 告知我们您是否遇到任何问题。
像往常一样,该版本可在 我们的 CDN 和 npm 包管理器上获得。其他第三方 CDN 可能也会很快提供它,但请记住,我们无法控制他们的发布计划,他们需要一些时间。以下是 jQuery 4.0.0 的亮点。
移除对 IE<11 的支持
jQuery 4.0 停止支持 IE 10 及更早版本。有些人可能会问为什么我们没有移除对 IE 11 的支持。我们计划分阶段移除支持,下一步 将在 jQuery 5.0 中发布。现在,我们将从移除专门支持 IE 11 之前版本的代码开始。
我们还放弃了对其他非常旧浏览器的支持,包括 Edge Legacy、iOS 早期版本(最后 3 个版本之前)、Firefox 早期版本(Firefox ESR 除外)和 Android Browser。您无需进行任何更改。如果您需要支持任何这些浏览器,请坚持使用 jQuery 3.x。
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 源代码迁移到 ES 模块
当 jQuery 源代码在 main 分支上从 AMD 迁移到 ES 模块 时,那是一个特殊的日子。jQuery 源代码一直与 jQuery 发布版一起在 npm 和 GitHub 上发布,但无法直接作为模块导入,除非使用 RequireJS,这是 jQuery 选择的构建工具。此后,我们已切换到 Rollup 来打包 jQuery,并且我们单独运行所有 ES 模块上的测试。这使得 jQuery 与现代构建工具、开发工作流程和浏览器兼容,通过使用 <script type=module>。
已弃用的 API 已移除
这些函数已经弃用了很多版本。现在我们已经发布了主要版本,是时候移除它们了。这些函数要么一直打算用于内部,要么现在在所有支持的浏览器中都有原生等效项。移除的函数包括
jQuery.isArray、jQuery.parseJSON、jQuery.trim、jQuery.type、jQuery.now、jQuery.isNumeric、jQuery.isFunction、jQuery.isWindow、jQuery.camelCase、jQuery.nodeName、jQuery.cssNumber、jQuery.cssProps 和 jQuery.fx.interval。
请改用原生等效项,例如 Array.isArray()、JSON.parse()、String.prototype.trim() 和 Date.now()。
移除已弃用的 API 与移除对旧 IE 的支持代码相结合,gzip 压缩后的大小减少了 3k 字节以上。
从 jQuery 原型中移除仅限内部使用的函数
jQuery 原型长期以来一直存在着行为与任何其他 jQuery 函数不同的数组方法,并且一直仅用于内部使用。这些方法是 push、sort 和 splice。现在它们已从 jQuery 原型中移除。如果您正在使用这些方法,$elems.push( elem ) 可以替换为 [].push.call( $elems, elem )。
焦点事件顺序现在遵循 W3C 规范
长期以来,浏览器对于焦点和模糊事件的顺序存在分歧,包括 focusin、focusout、focus 和 blur。最终,所有 jQuery 4.0 支持的浏览器的最新版本都已收敛到通用的事件顺序。不幸的是,它与 jQuery 多年来选择的一致顺序不同,这使得它成为一个破坏性更改。至少现在每个人都在同一页面上了!
从 jQuery 4.0 开始,我们不再覆盖原生行为。这意味着除了 IE 之外的所有浏览器都将遵循当前的 W3C 规范,即
- blur
- focusout
- focus
- focusin
jQuery 在早期版本中的顺序是:focusout、blur、focusin、focus。具有讽刺意味的是,唯一曾经遵循旧 W3C 规范(在 2023 年更新之前)的浏览器是 Internet Explorer。
更新精简版构建
jQuery 4.0.0 中移除了 Deferreds 和 Callbacks,精简版构建变得更小(现在约为 19.5k 字节 gzip 压缩!)。Deferreds 长期以来支持 Promises A+ 标准,因此在大多数情况下可以使用原生 Promises 代替,并且它们在 jQuery 的所有支持的浏览器中都可用,除了 IE11。Deferreds 具有一些原生 Promises 不支持的额外功能,但大多数用法可以迁移到 Promise 方法。如果您需要支持 IE11,最好使用主构建或为原生 Promises 添加一个 polyfill。
下载
您可以从 jQuery CDN 获取文件,或直接链接到它们
https://code.jquery.com/jquery-4.0.0.js
https://code.jquery.com/jquery-4.0.0.min.js
您也可以从 npm 获取此版本
npm install jquery@4.0.0
精简版
有时您不需要 ajax,或者更喜欢使用许多独立的专注于 ajax 请求的库。而且,通常使用 CSS 和类操作进行 Web 动画更简单。最后,所有 jQuery 支持的浏览器(IE11 除外)现在都支持本机 Promises,因此在大多数情况下不再需要 Deferreds 和 Callbacks。除了包含所有内容的常规 jQuery 版本之外,我们还发布了一个排除这些模块的“精简”版本。这些天 jQuery 的大小很少成为加载性能问题,但精简版本比常规版本小约 8k gzip 字节。这些文件也可用在 npm 包和 CDN 上
https://code.jquery.com/jquery-4.0.0.slim.js
https://code.jquery.com/jquery-4.0.0.slim.min.js
这些更新已经作为 npm 和 Bower 上的当前版本提供。有关获取 jQuery 的所有方式的信息,请访问 https://jqueryjs.cn/download/。公共 CDN 今天会收到其副本,请给它们几天时间来发布文件。如果您急于开始,请使用我们 CDN 上的文件,直到它们有机会更新为止。
感谢
感谢所有参与本次发布的人员,包括提交补丁、报告错误或测试的人员,例如 ac-mmi, Alex, Ulises Gascón, Richard Gibson, Michał Gołębiowski-Owczarek, Gabriela Gutierrez, J.Son, Liam James, Anders Kaseorg, Simon Legner, neogy-akash, Christian Oliff, Dimitri Papadopoulos Orfanos, Bruno PIERRE, Baoshuo Ren, studystill, Timo Tijhof,以及整个 jQuery 团队。祝 jQuery 20 岁生日快乐!
在过去的 20 年里,有许多出色的个人为 jQuery 及其相关项目做出了贡献,我们中的许多人聚集在达拉斯参加了一次重聚。John Resig 甚至通过视频加入了我们。这个版本在我们所有人聚集在一起时发布的。

变更日志
完整变更日志:4.0.0
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)
属性
- 使
.attr( name, false )移除所有非 ARIA 属性 (#5388, 063831b6) - 减少几个字节 (b40a4807)
- 不要在 setter 中将属性字符串化 (#4948, 4250b628)
- 移除
toggleClass(boolean|undefined)签名 (#3388, a4421101) - 重构 val():不要剥离回车符,隔离 IE 解决方法 (ff281991)
- 不在 IE 之外的地方设置类型属性钩子 (9e66fe9a)
核心
- 删除过时的解决方法,更新支持注释 (e2fe97b7)
- 将
$.parseHTML从document.implementation切换到DOMParser(0e123509) - 修复 exports 设置,使打包器可以使用 ESM 和 CommonJS (#5416, 60f11b58)
- 添加有关命名导出的更多信息 (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
- 修复
<col>表格元素的尺寸 (#5628, eca2a564) - 从 finalPropName 中删除缓存 (640d5825)
- 测试:修复测试,并支持 CSS zoom 下的测试 (5489, 071f6dba)
- 修复最初隐藏的 iframe 的 reliableTrDimensions 支持测试 (b1e66a5f)
- 选择器:与 3.x 对齐,移除外部 `selector.js` 包装器 (53cf7244)
- 使 reliableTrDimensions 支持测试与 Bootstrap CSS 协同工作 (#5270, 65b85031)
- 使 `offsetHeight( true )` 等包含负边距 (#3982, bce13b72)
- 对于仅包含空格的 CSS 变量值返回 `undefined` (#5120) (7eb00196)
- 不要修剪未定义的自定义属性的空格 (ed306c02)
- 跳过 `addClass( array )` 中的 falsy 值,压缩代码 (#4998, a338b407)
- 证明在 CSS 属性值上使用 rtrim 的合理性 (655c0ed5)
- 修剪 CSS 自定义属性值周围的空格 (#4926, efadfe99)
- 在 jQuery 精简版本中包含 `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)
文档
- 更新了漏洞报告流程并添加了升级步骤 (02cf4ee0)
- 修复注释中的一些小问题 (e4d4dd81)
- 更新 README 中的 herodevs 链接 (#5695, 093e63f9)
- 使 CONTRIBUTING.md 与
3.x-stable一致 (d9281061) - 更新 CONTRIBUTING.md (4ef25b0d)
- 向 README 添加版本支持部分 (cbc2bc1f)
- 将剩余的 HTTP URL 更新为 HTTPS (7cdd8374)
- 修复程序包 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 issue 引用替换为 `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)
事件
- 在 beforeunload 中使用
.preventDefault()(7c123dec) - 提高 leverageNative 中内部原生事件的鲁棒性 (#5459, 527fb3dc)
- 避免 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)
- 停止兼容 focusin & focusout 事件 (#4300, 8a741376)
- 防止 leverageNative 注册重复的虚拟处理程序 (eb6c0a7c)
- 修复处理多个异步焦点事件的问题 (#4350, ddfa8376)
操作
- 使 jQuery.cleanData 在清理期间不会跳过元素 (#5214, 3cad5c43)
- 泛化一个测试以支持 IE (88690ebf)
- 支持 $el.html(selfRemovingScript) (#5378) (#5377, 937923d9)
- 将 domManip 提取到单独的文件 (ee6e8740)
- 不要从脚本中移除 HTML 注释 (#4904, 2f8f39e4)
- 在 DOM 操作中尊重脚本的 crossorigin 属性 (#4542, 15ae3614)
- 避免在 buildFragment 中连接字符串 (9c98e4e8)
- 使 jQuery.htmlPrefilter 成为一个恒等函数 (90fed4b4)
- 选择器:尽可能使用 nodeName 工具来节省大小 (4504fc3d)
Offset
- 提高在查找“真实”偏移父元素时的搜索深度 (556eaf4a)
选择器
- 移除对
:has的兼容处理;在 iPhone 和 iPad 上进行测试 (65e35450) - 正确弃用
jQuery.expr[ ":" ]/jQuery.expr.filters(329661fd) - 使 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)
支持
- 确保支持 div 的显示设置为 block (#4832, 09f25436)
Tests
- 修复 Headless Chrome 中的“外部视图位置”测试 (23d72cb1)
- 修复 Chrome 141 中的选择器测试 (25a1b080)
- 将 IE 的 nomodule 测试超时时间从 1 秒增加到 5 秒 (5eab0a3c)
- 修复模块/nomodule 测试的易出错性 (5964acf3)
- 使用 releases.jquery.com 作为 AJAX 测试的外部主机 (f21a6ea6)
- 修复
jQuery.get( String, null-ish, null-ish, String )的测试 (05325801) - 添加
jQuery.get( String, null-ish, null-ish, String )的测试 (76687566) - 将 3.x-stable 中的
hidden="until-found"属性测试回移植 (3a31866b) - 将测试运行程序迁移到 jquery-test-runner (733e62d2)
- 将自定义属性 getter 测试添加到选择器模块 (44667709)
- 切换到更新的 promises-aplus-tests 分支 (559bc5ac)
- 在 GitHub Actions 中以 IE 模式运行 Edge 测试 (6d78c076)
- 在真实 Firefox ESR 上运行测试 (4b7ecbad)
- 使 mock.php 间距与 3.x-stable 分支对齐 (d5ae14f6)
- 替换 qunit fixture 中的死链接 (dbc9dac7)
- 替换 express 为基本的 Node 服务器 (c85454a8)
- 移除不必要的滚动功能测试 (ea31e4d5)
- 使
:has选择器测试与3.x-stable对齐 (f2d9fde5) - 撤销并发组更改 (fa73e2f1)
- 将 github ref 添加到并发组 (5880e027)
- 使 beforeunload 事件测试无论扩展如何都能工作 (399a78ee)
- 共享所有工作程序类型的队列/浏览器处理 (284b082e)
- 改进不同类型值的差异 (b9d333ac)
- 显示任何和所有实际/预期值 (f80e78ef)
- 将差异添加到测试报告器 (44fb7fa2)
- 将实际和预期消息添加到测试报告器 (1e84908b)
- 修复失败的浏览器确认导致的工作程序重新启动 (fedffe74)
- 为测试运行器添加 –hard-retries 选项 (822362e6)
- 修复在服务器未停止的情况下清理的问题 (0754d596)
- 修复不稳定的消息日志;忽略删除 worker 失败 (02d23478)
- 在 BrowserStack 测试中重用浏览器 worker (#5428) (95a4c94b)
- 使用允许列表代替白名单 (2b97b6bb)
- 将测试基础设施迁移到最小依赖 (dfc693ea)
- 修复 Node.js 20 上的 Karma 测试 (d478a1c0)
- 禁用 ":lang respects escaped backslashes" 测试 (#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 数据测试 (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)