我从来没有机会在 jQuery 的发布说明中说这句话,但愿五月四日与你同在!不久前,在一个与我们这个星系完全一样的星系中,我们发布了 jQuery 3.5.0。我们针对该版本中的一个回归问题进行了快速修复。
具体来说,我们更改了内部数据对象,使用 Object.create( null ) 代替普通对象 ({})。我们这样做是为了防止与 Object.prototype 属性上的键发生冲突。但是,这也意味着用户(尤其是插件)无法再使用原生 .hasOwnProperty() 方法检查 jQuery 数据中的内容,并且破坏了一些代码。我们已经撤销了该更改,但计划在 jQuery 4.0 中将其重新引入。这是此版本中唯一的代码更改。其他更改包括对我们的文档和构建系统的一些小的更新。
3.5.0 中的安全修复
jQuery 3.5.0 包含了对 jQuery 的 DOM 操作方法中的两个安全问题的修复,例如 .html()、.append() 和其他方法。这两个问题的安全公告已在 GitHub 上发布。虽然我们在 jQuery 3.5.0 博客文章中提供了第一个问题的所有细节,但我们没有提供第二个问题的所有细节,并且希望在此文章中提供这些细节。
第二个问题与第一个问题非常相似。它是一个 XSS 漏洞,与将 <option> 元素传递给 jQuery 的 DOM 操作方法有关。本质上,我们正在使用正则表达式将 <option> 元素包装在 <select> 元素中,以确保这些元素在旧版 IE(IE <= 9 在 <select> 元素外部插入 <option> 标签时,会将其内容替换为标签本身)中正确解析。
我们的修复是在需要时才应用此代码。幸运的是,由于 IE9 不同的解析行为,我们可以将修复保留在 IE9 中,而不会将其暴露于与其他浏览器相同的漏洞中。请尽快升级以避免这些漏洞。
升级
如果您尚未升级到 jQuery 3.5,请查看 3.5 升级指南。如果您尚未升级到 jQuery 3+,请先查看 3.0 升级指南。此外,jQuery Migrate 插件将帮助您识别代码中的兼容性问题。
如果您还无法升级到 3.5+,Daniel Ruf 已经提供了 先前 jQuery 版本的补丁。请尝试此新版本,并 告知我们您遇到的任何问题。
下载
您可以从 jQuery CDN 获取文件,或直接链接到它们
https://code.jqueryjs.cn/jquery-3.5.1.js
https://code.jqueryjs.cn/jquery-3.5.1.min.js
您也可以从 npm 获取此版本
npm install jquery@3.5.1
精简版
有时您不需要 ajax,或者您更喜欢使用许多专注于 ajax 请求的独立库。而且,通常使用 CSS 和类操作进行 Web 动画更简单。除了包含 ajax 和效果模块的常规 jQuery 版本之外,我们还发布了一个“精简”版本,该版本排除了这些模块。如今,jQuery 的大小很少成为加载性能问题,但精简版本比常规版本小约 6k 压缩字节。这些文件也可用在 npm 包和 CDN 上
https://code.jqueryjs.cn/jquery-3.5.1.slim.js
https://code.jqueryjs.cn/jquery-3.5.1.slim.min.js
这些更新已经作为 npm 和 Bower 上的当前版本提供。有关获取 jQuery 的所有方式的信息,请访问 https://jquery.org.cn/download/。公共 CDN 今天会收到其副本,请给它们几天时间来发布文件。如果您急于开始,请使用我们 CDN 上的文件,直到它们有机会更新为止。
感谢
感谢所有参与此版本发布的人员,包括提交补丁、报告错误或进行测试的人员,包括 Pierre Grimaud、Michal Golebiowski-Owczarek、Ed S、vanillajonathan 和整个 jQuery 团队。
变更日志
完整变更日志:3.5.1
构建
- 在 Node.js 14 上进行测试,停止测试 Node.js 8 和 13 (205dd134)
- 在 ESLint 中启用 reportUnusedDisableDirectives (b21d6710)
- 将 3.x-stable 版本更新到 3.5.1-pre. (898784ab)