首页 我们的服务 服务案例 关于我们 新闻博客 联系我们 免费咨询
前端开发

jQuery4.0.0发布

📅 2026-04-06 👁️ 阅读 215
jQuery4.0.0发布

2006年1月14日,John Resig在纽约市的BarCamp大会上首次发布了名为jQuery的JavaScript库。二十年后的今天,jQuery团队欣然宣布正式发布jQuery 4.0.0版本。历经漫长的开发周期和多次预发布版本,jQuery 4.0.0带来了诸多改进与现代化升级。这是近十年来的首个重大版本更新,包含若干破坏性变更,升级前请务必仔细阅读以下说明。不过我们预计大多数用户只需对代码进行最小程度的修改即可完成升级。

许多破坏性变更其实是团队多年来想做却无法在补丁或次要版本中实现的。我们精简了遗留代码,移除了部分已废弃的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 系统前三个版本、Firefox 前两个版本(Firefox ESR 除外)以及 Android 浏览器。您的代码无需进行任何修改。若需支持上述浏览器,请继续使用 jQuery 3.x 版本。

可信类型与CSP

jQuery 4.0新增对可信类型的支持,确保以可信HTML 作为 jQuery 操作方法的输入时,不会违反 require-trusted-types-for 内容安全策略指令。

此外,虽然部分AJAX请求已使用script标签来维护crossdomain等属性,但我们已将大多数异步脚本请求切换为使用script标签,以避免因使用内联脚本引发的CSP错误。仍有少数场景使用XHR进行异步脚本请求,例如传递“headers”选项时(请改用scriptAttrs!),但我们现已尽可能统一采用script标签。

jQuery源代码迁移至ES模块

当main分支上的jQuery源代码从AMD迁移至ES模块时,堪称里程碑时刻。尽管 jQuery 源代码始终随版本发布在 npm 和 GitHub 上,但此前无法直接作为模块导入——必须通过 jQuery 专用的构建工具 RequireJS。如今我们已切换至 Rollup 进行打包,并单独运行所有 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 的支持代码删除,最终使压缩后文件大小减少了超过 3k 字节。

从 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 规范:

  1. blur

  2. focusout

  3. focus

  4. focusin

而 jQuery 旧版本的顺序为:focusout, blur, focusin, focus。讽刺的是,唯一曾遵循旧版W3C规范(2023年更新前)的浏览器竟是Internet Explorer。

精简版更新

jQuery 4.0.0通过移除Deferreds和Callbacks进一步缩减了精简版体积(gzip压缩后约19.5k字节!)。Deferreds 长期支持 Promises A+ 标准,因此在多数情况下可改用原生 Promise,且除 IE11 外所有 jQuery 支持的浏览器均可使用。虽然 Deferreds 具备原生 Promise 不支持的额外功能,但绝大多数用法均可迁移至 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与类操作组合实现网页动画往往更为简洁。最后,除IE11外,所有jQuery支持的浏览器现已全面原生支持Promises,因此在多数情况下不再需要Deferreds和Callbacks。除包含完整功能的常规版外,我们还发布了剔除这些模块的“精简版”。如今jQuery体积极少成为加载性能问题,但精简版经gzip压缩后比常规版小约8k字节。这些文件同样可在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://jquery.com/download/。公共CDN今日已接收更新文件,请等待数日更新完成。若需快速启动,可先使用我们CDN上的文件,待其更新后再行替换。

鸣谢

衷心感谢所有参与本次版本发布的同仁,包括提交补丁、报告漏洞或参与测试的Alex、 艾哈迈德·S·埃尔-阿菲菲fecore1达拉斯·弗雷泽理查德·吉布森、 Michał Gołębiowski-OwczarekPierre GrimaudGabriela GutierrezJonathan、 内克梅廷·卡拉卡亚安德斯·卡塞奥格金元燮西蒙·莱格纳, 沙尚卡·纳塔拉吉帕特·奥卡拉汉克里斯蒂安·奥利夫、 迪米特里·帕帕多普洛斯·奥尔法诺斯朴元亨布鲁诺·皮埃尔、 任宝硕比阿特丽斯·雷泽纳肖恩·罗宾逊埃德·桑德斯, 蒂莫·蒂霍夫汤姆克里斯蒂安·温茨ygj6 以及整个 jQuery 团队。

jQuery 二十岁生日快乐!

过去二十年间,众多杰出人士为jQuery及其相关项目做出了贡献,我们中的许多人齐聚达拉斯参加了一场重聚活动。John Resig甚至通过Zoom参与其中。本次发布正是在我们共聚一堂时发布的。

3.jpg

更新日志

完整更新日志: 4.0.0


需要专业的技术支持?

我们的技术团队随时为您服务

联系我们