jQuery 3.5.1 发布:修复回归

发布于 作者

我从未在 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 将任何<option>标签替换为它们的内容,当插入到<select>元素之外时)。

我们的修复是在需要的地方应用此代码。幸运的是,由于 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 和类操作的组合进行网页动画更简单。除了包含 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://jqueryjs.cn/download/。公共 CDN 今天收到他们的副本,请给他们几天时间发布文件。如果您急于快速开始,请使用我们 CDN 上的文件,直到他们有机会更新。

感谢

感谢所有参与此版本发布的人,他们通过提交补丁、报告错误或测试,包括Pierre GrimaudMichal Golebiowski-OwczarekEd Svanillajonathan和整个 jQuery 团队。

变更日志

完整变更日志:3.5.1

构建

  • 在 Node.js 14 上测试,停止在 Node.js 8 和 13 上测试 (205dd134)
  • 在 ESLint 中启用 reportUnusedDisableDirectives (b21d6710)
  • 将 3.x-stable 版本更新到 3.5.1-pre。 (898784ab)

数据

文档

  • 修复错别字 (ea3766c0)
  • 更新到 jsdom 存储库的链接 (f7fed7ee)
  • 在 README 中使用 https 作为超链接 (763dd3fe)

测试

  • 解决 iOS 8 – 12 中最近 XSS 测试中的故障 (ea2d0d50)
  • 添加对最近修复的操作 XSS 问题的测试 (58a8e879)
  • 清理新事件测试中的windowdocument处理程序 (c1c0598d)
  • 修复“jQuery.ajax() – JSONP – 同域”测试中的不稳定性 (46ba70c5)

关于“jQuery 3.5.1 发布:修复回归”的 3 个想法

  1. James Stroud 发布于 说道:

    感谢您的一切以及您的详细发布说明,它们非常有用。我也非常喜欢您列出安全修复的地方。我被您的星球大战引用逗乐了。再次感谢,我会让我的团队使用 3.5.1。

  2. JKWeb 发布于 说道:

    清理新事件测试中的windowdocument处理程序 (c1c0598d)

    终于。感谢您修复了这个问题。