jQuery 3.6.1 维护版本发布

发布于 作者

jQuery 3.6.1 已发布!自从上次发布以来已经有一段时间了。我们一直在尝试修复一些与焦点和模糊相关的难以捉摸的边缘情况,但始终无法正确修复。如果 jQuery 中有哪个领域很难更改,那很可能与焦点有关。我们现在将这些问题保持原样,并在未来解决,特别是由于这些更改最终可能需要一个主要版本发布。请参阅 gh-4856gh-4950 以获取更多详细信息。

尽管如此,此版本仍然包含一些重要的修复,详情如下。

像往常一样,该版本可在 我们的 cdn 和 npm 包管理器上获得。其他第三方 CDN 可能也会很快提供,但请记住,我们无法控制他们的发布计划,他们需要一些时间。以下是 jQuery 3.6.1 的亮点

基础设施改进

在这个版本中,我们进行了很多工作来更新一些测试和构建基础设施,包括从 Travis CI 迁移到 GitHub Actions,在 Node 16 而不是 Node 15 上进行测试,通过 https 加载我们的测试监听器,并添加更准确的自定义构建测试。我们还删除了存储库中某些文件注释中的一些旧链接。这些链接指向已被攻破的 URL。虽然这些文件从未在发布版中分发,但它们仍然存在于 GitHub 源代码中,并且已被删除。

不丢失焦点

此版本仍然包含 一个与焦点相关的修复。我们的焦点事件处理程序即使在删除 jQuery 焦点处理程序后仍然保持附加状态,从而破坏了任何后续的手动焦点触发。例如,

$elem
  .on("focus", function() {})
  .off("focus")
  .trigger("focus");

将不会触发焦点。

跳过 addClass( array ) 中的假值

在不增加任何大小的情况下,我们 添加了支持,以跳过传递给 addClass removeClass 的数组中的任何假值。

这使得像

elem.addClass( [ "a", "", "b" ] );

这样的代码可以同时添加 ab 类。

与自定义 CSS 属性值的规范对齐

CSS 规范的 一项更改 要求自定义属性必须进行修剪。现在,自定义 CSS 属性值中的空格将被 修剪。 以前,像 --prop: value ; 这样的内容会保留值中的前导和尾随空格,返回 ” value “。

附加带有 HTML 注释的脚本

发现我们的正则表达式存在一个问题,该问题是在附加脚本时从脚本中删除 HTML 注释,最终在某些边缘情况下删除了可执行脚本的一部分。幸运的是,我们的修复是 更多地依赖浏览器,但我们仍然需要在 3.x 分支中删除 CDATA 部分。 这将在 4.0 中删除。

jQuery.trim 的性能提升

虽然 jQuery.trim 已经在主分支中被删除,以支持原生 String#trim,为下一个主要版本做准备,但它仍然需要在 3.x 分支中用于某些该分支支持的浏览器,例如 Android 4.0。 某些边缘情况由于我们的正则表达式的结构而非常慢。 此后已更改,并且加速效果 非常显著

升级

我们预计从 jQuery 3.0+ 版本升级时不会出现兼容性问题。要升级,请查看新的 3.5 升级指南。如果您尚未升级到 jQuery 3+,请先查看 3.0 升级指南

jQuery Migrate 插件 将帮助您识别代码中的兼容性问题。请尝试这个新版本,并 告知我们您遇到的任何问题

如果您还无法升级到 3.5+,Daniel Ruf 已经提供了 先前 jQuery 版本的补丁

下载

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

https://code.jqueryjs.cn/jquery-3.6.1.js

https://code.jqueryjs.cn/jquery-3.6.1.min.js

您也可以从 npm 获取此版本

npm install jquery@3.6.1

精简版

有时您不需要 ajax,或者您更喜欢使用许多专注于 ajax 请求的独立库。而且,通常使用 CSS 和类操作进行 Web 动画更简单。除了包含 ajax 和效果模块的常规 jQuery 版本之外,我们还发布了一个“精简”版本,该版本排除了这些模块。如今,jQuery 的大小很少成为加载性能问题,但精简版本比常规版本小约 6k 压缩字节。这些文件也可用在 npm 包和 CDN 上

https://code.jqueryjs.cn/jquery-3.6.1.slim.js

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

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

感谢

感谢所有参与此版本发布的人员,包括提交补丁、报告错误或进行测试的人员,包括 fecore1Richard GibsonSimon LegnerMichal Golebiowski-OwczarekVladimir SitnikovTimo TijhofChristian Oliffygj6 和整个 jQuery 团队。

变更日志

完整变更日志:3.6.1

CSS

  • 跳过 `addClass( array )` 中的假值,压缩代码 (#4998, 9b34bdb1)
  • 证明在 CSS 属性值上使用 rtrim 的合理性 (a1373e2e)
  • 删除 curCSS 中 rtrimCSS 包含的冗余扩展 (509eeb89)
  • 修剪 CSS 自定义属性值的周围空格 (#4926, 219ccf5c)

已弃用

  • 提高包含大量空格的字符串的 `$.trim` 性能 (69940100)

文档

  • 更新 README 中的 webpack 网站 (410d5cf0)
  • 添加指向预览新 CLA 的链接 (b24e83bd)
  • 将 `#NUMBER` Trac 问题引用替换为 `trac-NUMBER` (95e34b69)
  • 删除旧 jQuery 源代码中的过期链接 (c3c4d207)
  • 删除来自 Web Archive 的链接 (#4981, 4b0d8900)
  • 更新 CONTRIBUTING.md 中最新的 jQuery 构建的 URL (4bb7d069)
  • 删除拉取请求模板中的 CLA 复选框 (93406490)

事件

  • 在 `.on(focus).off(focus)` 之后不要破坏焦点触发 (#4867, b3e4a7eb)

操作

Tests

  • 根据编译标志而不是 API 存在排除测试 (3.x 版本) (#5069, bc165128)
  • 解决 Firefox 中的 XML 解析错误 (be3bd560)
  • 将 colors 版本锁定到 1.4.0 (fa70e8fd)
  • 跳过 TestSwarm 上的 ETag AJAX 测试 (81fa1e2a)
  • 允许 AJAX 测试中 statusText 为 “success” (7439e221)
  • 在旧版 Safari/iOS 中禁用 CSS 自定义属性测试 (e9f77267)
  • 使 Karma 浏览器超时大于 QUnit 的超时 (a51eec74)
  • 不要从 mock.php 的 cspClean 操作中删除 csp.log (ba81326f)
  • 通过 HTTPS 加载 TestSwarm 监听器 (f6f07204)
  • 将背景图像从在线文件切换为本地 1×1.jpg (8d20cb97)
  • 删除 mock.php 中非典型的回调参数字符 (b14b62c8)

基础设施

  • 更新 GitHub Actions (0f6c3d9e)
  • 添加 dependabot.yml 配置 (GitHub Actions) (5a363017)
  • 在 Node 17 上测试,更新 Grunt 和 `karma-*` 包 (9bc0df70)
  • 在 GitHub Actions 中分离安装步骤和运行测试 (cb35067f)
  • 删除 travis.yml 和核心中的 travis 提及 (#4984) (55669883)
  • 迁移 CI 到 GitHub Actions (b39cfa15)
  • 在 Node.js 16 而不是 15 上进行测试 (f12cac60)
  • 从外部目录获取 core-js (752b8981)
  • 更新 3.x-stable 版本为 3.6.1-pre. (3642471e)

jQuery 维护者继续现代化举措,弃用 jQuery Mobile

发布于 作者

作者:Michal Golebiowski-Owczarek、Felix Nagel 和 jQuery 团队

编者注:以下博客文章最初发布在OpenJS Foundation 博客上。

jQuery 维护者正在继续现代化其总体项目,该项目仍然是当今部署最广泛的 JavaScript 库之一。 该团队宣布,其伞下的 jQuery Mobile 项目将于 2021 年 10 月 7 日完全弃用。 由于自该项目 2010 年推出以来,移动应用程序开发的新技术已经发展,因此我们鼓励开发人员为此 jQuery Mobile 过渡做好计划。

请注意,

  • 下载构建器将继续可用。
  • Mobile 1.4 与最新的 jQuery Core 不兼容。
  • 将关闭问题。 请通过电子邮件将关键安全漏洞报告给 security@jquery.com。

庆祝 jQuery Mobile 的历史

jQuery Mobile 构思并于 2010 年宣布,比 jQuery 的发布晚三年。 该项目令人兴奋且雄心勃勃。 在宣布时,jQuery Mobile 承诺跨多个平台、浏览器和版本实现兼容性:


“jQuery 社区一直致力于使 Web 尽可能地高效和有趣。 当我们听到 jQuery Mobile 的使命时,我们想提供帮助。 通过 webOS,我们已经表明 Web 平台对开发人员来说非常棒。” - Dion Almaer – Palm

当时,移动网络迫切需要一个能够在所有浏览器上工作的框架,让开发者能够构建真正的移动网络应用程序。jQuery 已经改变了开发者在网络上构建应用的方式,使得创建安全、符合规范的应用变得更容易(也更快)。 

有了 jQuery Mobile,该项目的目标是将 jQuery 的易用性带到支持 HTML 的移动设备浏览器,并使开发者更容易构建渐进增强的 Web 应用程序。由 Filament Group 的 Todd Parker 领导,Filament Group 是一家以跨平台和可访问性优先的应用开发工作室,jQuery Mobile 于 2010 年 10 月发布了 alpha 版本。 

Alpha 版本的功能包括几个组件、布局和主题工具,简化了构建移动 Web 应用程序的过程。渐进增强和优雅降级,当时(且具有挑战性)是 Web 开发中的热门话题,在 jQuery Mobile 中得到了重点体现:jQuery Mobile 承诺为开发者和用户提供其平台能够处理的最佳体验。可访问性是另一个关键特性,Mobile 承诺提供可以通过触摸、键盘或屏幕阅读器通过 ARIA 兼容组件进行导航的用户体验。简单性、文件大小以及通过应用商店部署 jQuery Mobile 应用程序的能力等附加功能进一步激发了人们的兴趣。 

在接下来的一年里,jQuery Mobile 团队继续添加兼容的平台和浏览器、新的组件和主题,并最终添加了一个主题生成器工具,允许开发者配置和下载主题,而无需编写任何 CSS。 

社区的响应是压倒性的——到 2011 年 11 月发布 1.0 版本时,jQuery Mobile 已经汇集了 125 多名贡献者、数十篇文章、教程和演示、8 本已出版的书籍,以及一个站点、插件和扩展库,以欢迎和介绍新开发者加入该项目。 

jQuery Mobile 在 2012 年和 2013 年全年继续每月发布新版本,定期添加和改进组件,解决与移动浏览器兼容性问题,并进行性能改进以加快页面渲染速度。开发团队还在每个新版本中继续优先考虑并强调响应式 Web 设计和可访问性原则的重要性。 

随着组件和控件数量的增加——包括官方支持的和社区广泛采用的,与移动平台、浏览器和 jQuery 核心的性能和兼容性问题也随之加剧。虽然该项目有一些自动化测试,但仍然有许多项目需要手动测试,这减慢了开发过程。 

2013 年年中,Jasper de Groot 成为项目负责人,并宣布 jQuery UI 和 jQuery Mobile 团队之间将进行更紧密的开发协作,共享目标、路线图和代码,以减轻两个团队的工作负担。该团队继续提供维护版本和支持,但在测试和支持如此庞大的社区的重压下,进展继续放缓。 

Alex Schmitz 于 2014 年 7 月接任负责人,但到那时,项目规模加上新的移动浏览器功能的步伐和可用性,使得为该项目找到可行的前进道路变得越来越困难。 

最新的稳定版本于 2014 年 10 月发布。Alex 和团队在 2017 年大力更新 jQuery Mobile,发布了 1.5 版本的 alpha 版本;该版本将兼容 jQuery 3.0 并支持 npm,等等。 

jQuery Mobile 于 2018 年成为 OpenJS Foundation Emeritus 项目,标志着该项目已实现其目标。 

jQuery 现代化倡议

jQuery mobile 的弃用遵循了 jQuery 项目伞下的另一个项目的谨慎过渡,即 jQuery UI。 

jQuery Core 仍在积极维护和广泛实施。作为其现代化倡议的一部分,该团队今年也对其基础设施进行了一系列更新,包括迁移和改进其 CDN。 

庆祝 jQuery Mobile 维护者和贡献者

对 jQuery Mobile 的贡献为世界各地的人们和组织带来了机遇,我们感谢多年来的所有贡献。我们特别感谢 jQuery Mobile 过去的维护者:Alexander Schmitz、Jasper de Groot 和 Todd Parker。 

jQuery 维护者更新并过渡 jQuery UI,作为整体现代化努力的一部分

发布于 作者

作者:Michal Golebiowski-Owczarek、Felix Nagel 和 jQuery 团队

编者注:以下博客文章最初发布在 OpenJS Foundation 博客 上。

jQuery 项目正在积极维护并被广泛实施——它被 1000 万最受欢迎网站中的 73% 使用。作为其持续努力使项目现代化的组成部分,jQuery 维护者采取措施逐步停止其在 jQuery 伞下的一个项目,通过谨慎的过渡来实现这一目标。 

今天,jQuery UI 发布了 1.13 版本——这是它 5 年来的第一个版本,也是该项目的最终计划版本。也许最重要的更新是 jQuery UI 1.13 现在运行在最新版本的 jQuery Core 上,除了社区的修复和改进之外,还提供了一些先前版本中缺失的浏览器兼容性和安全更新。jQuery UI 下载构建器也已恢复并更新,以便开发人员可以继续下载 UI 以及他们最喜欢的主题。该版本是 jQuery 所有项目持续更新系列的一部分。

jQuery UI 处于仅维护模式。用户不应期望任何新版本,尽管可能会发布补丁来解决关键的安全、互操作性或回归错误。该项目的错误跟踪工具 Trac 已设置为只读模式,开发人员被要求在项目的 GitHub 仓库 上提交任何关键问题。 

jQuery UI 于 2007 年 9 月首次推出,作为构建在 jQuery 库之上的用户界面交互、效果、小部件和主题的策划集合。它迅速受到欢迎,因为它是在当时经过最佳测试和最易于访问的 UI 框架之一。该工具帮助开发人员使用当时的最佳实践构建 UI 组件,例如表单控件和日期选择器。在其鼎盛时期,jQuery UI 被 Pinterest、PayPal、IMDB、赫芬顿邮报和 Netflix 等众多企业采用。 

今天,jQuery UI 仍然是 jQuery Core 更新的重要测试平台,帮助维护团队发现随着 Web 平台的发展而出现的错误和互操作性问题。 

庆祝 jQuery UI 的历史

随着 2006 年 jQuery 的发布,Web 开发人员能够比以往任何时候都更快、更轻松地访问和操作 DOM 和 CSS。数千个开源 jQuery 小部件和插件被创建,以处理以前棘手的问题,例如显示和隐藏元素、轮播图像或在日历上选择日期。jQuery 生态系统成为一个充满工具的游乐场,可以实现 Web 上新的有趣交互。 

“新颖有趣”并不总是意味着“良好有用”——虽然有许多好的插件可用,但并不总是很容易确定哪些性能最高或提供最佳用户体验。开发人员可能需要搜索合适的工具,或者更糟糕的是,花费大量时间在几个插件之间切换,以找出哪个效果最好。此外,Web 上缺乏用户体验最佳实践的示例,因此访问一个网站的访问者在另一个网站上执行类似任务时可能会遇到截然不同(因此令人困惑)的交互。 

jQuery Core 团队的成员希望帮助开发人员为他们的网站和应用程序编写高性能、高质量和可重用的 jQuery 组件。经过一些讨论,诞生了一个具有严格编码、文档和主题标准的第二个库的想法。该项目的愿景和目标包括:开发协作设计流程;提供灵活的样式和主题;创建优雅的视觉和交互设计;提供强大的 API;并优先考虑渐进增强、可访问性、国际化和本地化支持。

2007 年 9 月,jQuery UI 正式发布,作为构建在 jQuery 之上的用户界面交互、效果、小部件和主题的集合。此后不久,团队将重点转向提供一组完整的 API 和方法,以允许开发人员创建灵活的、功能齐全的小部件,这些小部件符合高质量标准。添加了诸如缓动和动画之类的 CSS 效果,并帮助开发人员创建更现代、更增强的体验。Filament Group 团队后来添加了一个 ThemeRoller,允许开发人员通过提供可定制的主题样板快速入门。ThemeRoller 今天仍然在运行。  

到 2008 年底,jQuery UI 拥有一个爆炸性的用户、开发人员和交互设计师社区,他们定期提供更新和改进,因为最佳实践和风格偏好不断发展。在 2009 年至 2016 年期间,社区提供各种新的官方和非官方主题和插件、互操作性和其他错误修复、强大的测试流程以及对多个 jQuery 版本的支持。 

jQuery UI 先前的官方版本发布于 2016 年 9 月,距离其启动近十年。在此期间,jQuery 社区帮助激发了数十个其他开源项目、模式和组件库。但较新的 CSS 框架和方法正在占据主导地位,社区逐渐转向其他项目。UI 团队和 jQuery Mobile 团队合并,该团队更加关注维护和与 jQuery Core 的兼容性。  

jQuery UI 于 2018 年成为 OpenJS Foundation Emeritus 项目,承认它正在逐步停止,同时指出它对 JavaScript 生态系统的重大意义。

庆祝 jQuery UI 维护者和贡献者

该项目的范围和社区的包容性促使无数的网页开发者爱上并欣赏用户体验、本地化、国际化、可访问性和干净、可重用的代码。虽然许多小时的工作和贡献投入到使 jQuery UI 成为一个成功的库,但 jQuery UI 核心团队在项目生命周期内十多年来辛勤工作,引导工作和社区发展,值得特别表彰。 Alex SchmitzJörn ZaeffererFelix NagelMike SherovRafael Xavier de SouzaScott González 领导了一个 团队,该团队拥有众多核心贡献者和超过 300 位其他作者

额外的感谢归功于 Michał Gołębiowski-Owczarek,他准备了 1.13 版本并在过去一年中管理该仓库。

OpenJS Foundation 将永远感谢这些开源开发人员的工作以及他们通过其工作对生态系统的影响。请加入我们,庆祝这些开发人员和 jQuery UI!

jQuery 项目更新,解决临时的 CDN 问题

发布于 作者

作为其持续的基础设施更新的一部分,jQuery 基础设施团队正在进行配置和部署更改,以解决一些用户报告的间歇性中断。该问题是由于有缺陷的 IP 允许列表造成的,这会影响从某些 IP 地址下载 jQuery 项目资产的用户。 

预计在未来几周内解决此问题。在此期间,用户可以通过下载和提供他们需要的文件来缓解该问题。

CDN 迁移是项目今年进行的一系列基础设施改进项目的一部分。基础设施团队计划在今年晚些时候提供这些改进的完整概述,这将有助于支持 jQuery 及其相关项目的长期维护。

jQuery 仍然是一个广泛使用的开源项目,拥有活跃的维护者。虽然许多网站在本地托管 jQuery,但其他网站依赖 jQuery CDN 按需提供库。平均而言,jQuery CDN 每月提供超过 2PB 的代码。该项目托管在 OpenJS Foundation,这是一个中立的供应商组织,旨在发展和维护 JavaScript 和 Web 生态系统。

jQuery 3.6.0 发布!

发布于 作者

jQuery 3.6.0 已发布!在 jQuery 3.5.0 中,主要变化是 html prefilter 的安全修复。此版本不包含安全修复,但包含一些不错的错误修复和改进。我们仍然关注 jQuery 4.0 的发布,但在此之前,我们将继续支持 3.x 分支并解决重要问题。

像往常一样,该版本可在 我们的 cdn 和 npm 包管理器上获得。其他第三方 CDN 可能也会很快提供它,但请记住,我们无法控制他们的发布计划,他们需要一些时间。以下是 jQuery 3.6.0 的亮点

即使对于 JSONP 错误也返回 JSON

您可能已经从次版本号猜到,此版本中偷偷加入了一个功能。在以前的版本中,当 JSONP 请求响应错误时,响应通常仍然是一个可执行脚本。我们更改了默认行为,在这种情况下尝试执行响应。遇到错误时,常规脚本仍然会被跳过。有关更多信息,请参阅 gh-4771

修复

值得强调的一个错误与 在 focus 处理程序中将焦点重定向到另一个元素 有关。以下是一个 focus 处理程序在另一个 focus 处理程序内部触发的示例

elem1.on( "focus", function() {
  elem2.trigger( "focus" );
} );

由于在 IE 之外的所有地方同步的性质,3.4.0 中添加的利用原生事件的修复导致初始元素的原生 .focus() 方法最后被调用,从而夺回焦点。虽然代码继续利用原生 focus 和 blur 事件,但我们能够通过与原生方法更加一致并仅将最后一个 focus 事件向上传播到 DOM 树来修复此问题。

其他错误修复和改进包括修复了 在 Firefox 中检索表格行尺寸 的错误,修复了 在 Chrome 中触发已删除元素上的 focusout 事件时发生的崩溃,对一些测试进行了多项改进等等。您可以在下面找到完整的变更日志。

升级

除了不再确保与 XHTML 兼容的标签外,我们预计从 jQuery 3.0+ 版本升级时不会出现其他兼容性问题。要升级,请查看新的 3.5 升级指南。如果您尚未升级到 jQuery 3+,请先查看 3.0 升级指南

jQuery Migrate 插件 将帮助您识别代码中的兼容性问题。请尝试这个新版本,并 告知我们您遇到的任何问题

如果您还无法升级到 3.5+,Daniel Ruf 已经提供了 先前 jQuery 版本的补丁

下载

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

https://code.jqueryjs.cn/jquery-3.6.0.js

https://code.jqueryjs.cn/jquery-3.6.0.min.js

您也可以从 npm 获取此版本

npm install jquery@3.6.0

精简版

有时您不需要 ajax,或者您更喜欢使用许多专注于 ajax 请求的独立库。而且,通常使用 CSS 和类操作进行 Web 动画更简单。除了包含 ajax 和效果模块的常规 jQuery 版本之外,我们还发布了一个“精简”版本,该版本排除了这些模块。如今,jQuery 的大小很少成为加载性能问题,但精简版本比常规版本小约 6k 压缩字节。这些文件也可用在 npm 包和 CDN 上

https://code.jqueryjs.cn/jquery-3.6.0.slim.js

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

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

感谢

感谢所有参与此版本发布的人员,包括提交补丁、报告错误或进行测试的人员,包括 Dallas FraserMichal Golebiowski-OwczarekWonseop KimWonhyoung ParkBeatriz RezenerNatalia Sroka 以及整个 jQuery 团队。

变更日志

完整变更日志:3.6.0

Ajax

  • 执行 JSONP 错误脚本响应 (#4771, 3bae54aa)

核心

  • 报告 parseXML 中的浏览器错误 (#4784, 54d98835)
  • 为 jQuery 3.x 恢复 QtWebKit 支持 (#4756, bf1430a7)

Deferred

  • 将 master 重命名为 primary (15b62a2e)

Dimensions

  • 修改可靠的 trDimensions 支持测试以考虑 FF (#4529, bcd40aa7)

文档

  • 将 JS Foundation 提及更改为 OpenJS Foundation (db43ef0b)

事件

  • 使 focus 重新触发不将焦点返回到原始元素 (#4382, 2fadbc0a)
  • 不要在移除元素时在 blur 上崩溃 (#4417, aaf9c55a)
  • 删除 event.which shim (#3235, 2bf9793e)

选择器

  • 将 Sizzle 从 2.3.5 更新到 2.3.6 (#4782, 16548740)

支持

  • 确保支持 div 的显示设置为块 (#4844) (#4832, f8bdb127)

Tests

  • 修复不自动执行没有 dataType 的脚本的测试 (7298e04f)
  • 跳过 Legacy Edge 中的 jQuery.parseXML 错误报告测试 (bf06dd47)
  • 修复 jQuery.parseXML 错误报告测试 (1ec36332)
  • 识别 Node.js 模拟服务器中带有点的回调 (4c572a7f)
  • 跳过 Safari 中的“jQuery.ajax() 在卸载时”测试 (4f016c64)
  • 删除未使用的局部变量 (beea433d)
  • 删除过时的 jQuery.cache 引用 (5e028c76)
  • 删除过时的 jQuery 数据测试 (8ad78cdb)

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 在 <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 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)
  • 更新 README 中的 jsdom 存储库链接 (f7fed7ee)
  • 在 README 中使用 https 链接 (763dd3fe)

Tests

  • 解决最近的 XSS 测试中 iOS 8 – 12 中的失败 (ea2d0d50)
  • 为最近修复的操纵 XSS 问题添加测试 (58a8e879)
  • 清理新事件测试中的 `window` 和 `document` 处理程序 (c1c0598d)
  • 修复“jQuery.ajax() – JSONP – Same Domain”测试中的不稳定性 (46ba70c5)

jQuery 3.5.0 发布!

发布于 作者

jQuery 3.5.0 已发布!像往常一样,该版本可在 我们的 cdn 和 npm 包管理器上获得。其他第三方 CDN 可能也会很快提供它,但请记住,我们无法控制他们的发布计划,他们需要一些时间。

我们希望您保持健康和安全,同时我们中的许多人被困在家里。在病毒肆虐全球的情况下,我们意识到 jQuery 可能不是您或您管理的网站的首要任务。当您有时间时,我们建议您查看此新版本并升级。

安全修复

此版本的主要变化是安全修复,您可能需要更改自己的代码以进行调整。原因如下:jQuery 在其 jQuery.htmlPrefilter 方法中使用正则表达式来确保所有闭合标签在传递到方法时都符合 XHTML 规范。例如,此预过滤器确保像 jQuery("<div class='hot' />") 这样的调用实际上转换为 jQuery("<div class='hot'></div>")。最近,有人报告了一个问题,表明该正则表达式可能会引入跨站点脚本 (XSS) 漏洞。

jQuery <=3.4.1 中的 HTML 解析器通常会正确处理,但存在一些边缘情况,解析可能会产生意想不到的后果。jQuery 团队一致认为有必要在次要版本中修复此问题,即使某些代码依赖于以前的行为并且可能会中断。jQuery.htmlPrefilter 函数在 3.5.0 中不使用正则表达式,并且将字符串原样传递。

如果您绝对需要旧行为,使用最新的 jQuery migrate 插件 提供了恢复旧 jQuery.htmlPrefilter 的函数。在包含插件后,您可以调用 jQuery.UNSAFE_restoreLegacyHtmlPrefilter(),jQuery 将再次确保符合 XHTML 规范的闭合标签。

但是,为了正确地清理用户输入,我们还建议使用 dompurify 并使用 SAFE_FOR_JQUERY 选项来清理来自用户的 HTML。如果您不需要旧行为,但仍然想清理来自用户的 HTML,则应从 jQuery 3.5.0 开始使用 dompurify 而不使用 SAFE_FOR_JQUERY 选项。有关更多详细信息,请参阅 3.5 升级指南

功能

随着我们称之为“位置选择器”的弃用以及 计划在 jQuery 4.0 中删除,我们添加了最后两个必要的替换方法。具体来说,我们添加了 .even().odd() 方法来替换 :even:odd 选择器。有了这些方法,我们就可以在 jQuery 4.0 中安全地删除这些过于复杂的选择器。

此版本中添加的另一个小功能是能够将上下文添加到 jQuery.globalEval。这是作为修复 iframe 中脚本执行错误 的一部分完成的。

修复

值得强调的一个错误是 我们修复的 Ajax 脚本传输中的一个错误。jQuery 过去会评估对脚本的任何响应,将其作为脚本,这并不总是期望的行为。这与 JSON 等其他数据类型不同,在这种情况下,这种约定是可以接受的。jQuery 3.5.0 现在只会评估成功的 HTTP 响应。

其他错误修复和改进包括 性能 改进 在 Sizzle 中,jQuery.map 中对大型数组的支持,在支持的情况下使用原生 .flat() 方法修复了 AMD 模块中的语法错误,对我们的测试基础设施进行了多项改进等等。您可以在下面找到完整的变更日志。

弃用

如果没有一些弃用,jQuery 的发布就不完整。在 jQuery 3.5.0 中,我们将 jQuery.trim 列入了弃用列表。JavaScript 自己的 String.prototype.trim() 是一个简单的替代方案。

我们还将 AJAX 事件别名 列入了弃用列表,它们可以用 .on("ajaxStart", …) 等代替。jQuery Migrate 现在会警告这些已弃用的方法,但它们将保留到 jQuery 4.0。

升级

除了不再确保与 XHTML 兼容的标签外,我们预计从 jQuery 3.0+ 版本升级时不会出现其他兼容性问题。要升级,请查看新的 3.5 升级指南。如果您尚未升级到 jQuery 3+,请先查看 3.0 升级指南

jQuery Migrate 插件 将帮助您识别代码中的兼容性问题。请尝试这个新版本,并 告知我们您遇到的任何问题

如果您还无法升级到 3.5+,Daniel Ruf 已经提供了 先前 jQuery 版本的补丁

下载

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

https://code.jqueryjs.cn/jquery-3.5.0.js

https://code.jqueryjs.cn/jquery-3.5.0.min.js

您也可以从 npm 获取此版本

npm install jquery@3.5.0

精简版

有时您不需要 ajax,或者您更喜欢使用许多专注于 ajax 请求的独立库。而且,通常使用 CSS 和类操作进行 Web 动画更简单。除了包含 ajax 和效果模块的常规 jQuery 版本之外,我们还发布了一个“精简”版本,该版本排除了这些模块。如今,jQuery 的大小很少成为加载性能问题,但精简版本比常规版本小约 6k 压缩字节。这些文件也可用在 npm 包和 CDN 上

https://code.jqueryjs.cn/jquery-3.5.0.slim.js

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

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

感谢

感谢所有参与本次发布的人员,包括提交补丁、报告错误或测试的人员,包括 Ahmed S. El-Afifi, Michal Golebiowski-Owczarek, Wonseop Kim, Dave Methvin, Shashanka Nataraj, Pat O’Callaghan, Sean Robinson, Christian Oliff, Christian Wenz,以及整个 jQuery 团队。

我们还要感谢 Masato Kinugawa 帮助我们识别并修复本次发布中的安全问题。

变更日志

完整变更日志: 3.5.0

Ajax

  • 对于不成功的 HTTP 响应,不要执行脚本 (#4250, #4655, da3dd85b)
  • 如果存在,用 content-type 头部值覆盖 s.contentType (#4119, 065143c2)
  • 弃用 AJAX 事件别名,将内联事件/别名标记为已弃用 (7a3cf9c0)

构建

  • 解决 Travis 配置警告 (7506c9ca)
  • 为浏览器代码中的 var 声明启用 ESLint one-var 规则 (0fdfdd82)
  • 在 Travis 上测试无 Sizzle 构建 (362075ae)
  • 更新 .mailmap & AUTHORS.txt (19f2dcba)
  • 测试:修复自定义构建测试,在 Travis 上验证;命名 Travis 作业 (d525ae34)
  • 同时对精简的 jQuery 文件进行 Lint 检查 (#3075, 37df5cdf)
  • 使 Karma 在 AMD 模式下工作 (46c284b1)
  • 为精简构建创建一个 `grunt custom:slim` 别名 (4cbdc745)
  • 仅在配置中定义的浏览器上运行 Travis 上的测试 (471b0043)
  • 同时在 Firefox ESR 上运行测试 (0a73b94a)
  • 除了 8、10 和 12 之外,还在 Node.js 13 上运行测试 (64c1fcc1)
  • 删除 Gruntfile.js 中针对 Node.js 6 的解决方法 (9f4204ec)
  • 在 Travis 上同时运行 FirefoxHeadless 上的测试 (ad3c2efa)
  • 通过 ESLint 要求 Node.js 脚本中的严格模式 (ac2da4e6)
  • 支持 jquery-release –dry-run 标志 (c7a5e1bd)
  • 停止将 src/core.js 复制到发布版 (#4489, 279d2e97)
  • ESLint:禁止使用未使用的函数参数 (d7e13f12)
  • 修复 AMD var-modules 的正则表达式解析 (#4389) (36b59c96)

核心

  • Ajax:使 nonce 和 global 与主版本保持一致,修复 AMD 问题 (22bf701f)
  • 在上下文中触发 iframe 脚本,在 globalEval 中添加 doc 参数 (#4518, 3dedc3f2)
  • 弃用 jQuery.trim (#4363, 56e73e0c)
  • 在支持的情况下使用 Array.prototype.flat (#4320, 2f666c1d)
  • 实现 .even() 和 .odd() 以替换 POS :even 和 :odd (409cbda7)

CSS

  • 解决 IE/Edge 中表行上的错误 getComputedStyle (#4490, 6d31477a)

数据

  • 事件:操作:防止与 Object.prototype 冲突 (#3256, 413ff796)

文档

  • 更新指向 EdgeHTML 问题的链接以通过 Web Archive (d72faced)
  • 将指向 Homebrew 的链接从 HTTP 转换为 HTTPS (ff5a43eb)

效果

事件

  • 仅为每个匹配的窗口和文档附加一个 focusin 处理程序 (#4652, 9e15d6b4)
  • 仅将事件附加到接受数据的对象 – 真正地 (#4397, f36f6abb)

操作

  • 跳过对象元素的包装器
  • 使 jQuery.htmlPrefilter 成为一个恒等函数 (1d61fd94)

Offset

  • 将 px 字符串发送到 .css() (57038fae)

选择器

Tests

  • 在 IE 中阻止一个 focusin 测试 (1a4f10dd)
  • 将必要的 done() 调用传递给 assert.async() (5ea844f6)
  • 使支持测试在 Firefox 4x/5x/60 上通过 (f0d5ec62)
  • 跳过 Firefox 中“表行上的宽度/高度,具有幻影边框”测试 (c79e1d5f)
  • 不要在 Chrome 中卸载时测试同步 XHR (c5b48c8c)
  • 修复 Chrome for Android 中的偏移分数测试 (0c67da4b)
  • 将 Android 用户代理检测移到 iOS 之上,并将 Safari 放在最后 (6276cb2e)
  • 使支持测试接受 Safari 13 及更高版本 (8167327f)
  • 更新 npo.js 并包含未精简的源代码 (3654bc83)

Traversing

  • 修复 contents() 在 object 元素上的问题s with children in IE (90f78b9a)
  • 修复 contents() 在带有子元素的 object 元素上的问题 (#4384, 42badf34)

jQuery 3.4.1:在 IE 中触发 focus 事件,以及在 iOS 10 中查找根元素

发布于 作者

大家好!jQuery 3.4.0 于 三周前发布,但我们收到了一些需要补丁发布的报告。感谢所有报告问题并帮助我们快速解决问题的人。以下是更改内容

在 IE 中多次触发 focus 或 blur 事件

jQuery 3.4.0 对触发原生事件(如 focusblur)的方式进行了一些更改。这些更改导致了一个回归,有时会导致以 "saved.shift is not a function" 形式抛出一个难以理解的错误。现在已修复。

示例

// Error thrown in IE10-11
// after clicking #test-element twice
jQuery("#test-element").click(function() {
  jQuery(this).trigger("blur");
});

检查 iOS 10.0-10.2 中的元素附加

在发布 3.4.0 时,我们在多个版本的 iOS 上运行了测试,包括 iOS 10.3 但不包括 10.0-10.2。这些版本不支持我们用来确定元素是否附加到 DOM 的原生函数。其他版本的 iOS 没有受到影响。我们添加了一个保护措施,以确保此方法存在,并在必要时回退到其他选项。

使用 AMD 加载 jQuery

jQuery 3.4.0 中添加了一个小模块,该模块使用了全局 jQuery 而不是使用 AMD 加载的本地 jQuery。这导致在使用 AMD 加载时出现 "jQuery is undefined" 错误,但现在应该已修复。

 


升级

从 jQuery 3.0+ 升级时,不应存在兼容性问题。如果您尚未升级到 jQuery 3+,请查看 3.0 升级指南jQuery Migrate 3.0 插件 将帮助您识别代码中的兼容性问题。

请尝试使用此新版本,并 告知我们您遇到的任何问题

下载

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

https://code.jqueryjs.cn/jquery-3.4.1.js

https://code.jqueryjs.cn/jquery-3.4.1.min.js

您也可以从 npm 获取此版本

npm install jquery@3.4.1

精简版

有时您不需要 ajax,或者您更喜欢使用许多专注于 ajax 请求的独立库。而且,通常使用 CSS 和类操作进行 Web 动画更简单。除了包含 ajax 和效果模块的常规 jQuery 版本之外,我们还发布了一个“精简”版本,该版本排除了这些模块。如今,jQuery 的大小很少成为加载性能问题,但精简版本比常规版本小约 6k 压缩字节。这些文件也可用在 npm 包和 CDN 上

https://code.jqueryjs.cn/jquery-3.4.1.slim.js

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

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

感谢

感谢所有参与此版本发布的人,包括提交补丁、报告错误或测试的人员,包括 Richard GibsonMichal Golebiowski-Owczarek 和整个 jQuery 团队。

变更日志

GitHub changelog: 3.4.1 中修复的问题 | 所有更改

构建

  • 修复 finalPropName 中的未解决的 jQuery 引用 (#4358, 0d4af529)

核心

  • 使 isAttached 在 iOS 10.0-10.2 上工作 (#4356, 7dddb19c)

事件

  • 防止 leverageNative 注册重复的虚拟处理程序 (6c1e7dbf)
  • 修复多个异步 focus 事件的处理 (#4350, 24d71ac7)

jQuery 3.4.0 发布

发布于 作者

jQuery 有了一个新的版本!自从上次发布以来已经有一段时间了,但我们预计这将是 3.x 分支的最后一次小版本发布,然后我们将开始对 jQuery 4.0 进行全面改造。但在进入 4.0 之前,我们很高兴地分享 jQuery 3.4.0 中包含的错误修复和改进。以下是一些亮点

.width 和 .height 的性能改进

在获取和设置尺寸时,在某些情况下,这可能会导致布局抖动,基本上意味着浏览器计算布局的次数超过了必要的次数。我们已在除 IE 之外的所有浏览器中修复了此问题,在 IE 中无法避免。

noncenomodule 支持

为了支持通过 .html 和 .append 等方法添加脚本元素,jQuery 将它们分开,并将新的脚本标签附加到加载和执行远程内容。在此过程中,诸如 noncenomodule 之类的属性被忽略了,但 jQuery 3.4.0 现在会保留它们。

单选元素:事件处理程序中的预期状态

我们已经修复了复选框中相同的问题,但不小心遗漏了单选输入。在下面的示例中,第一次单击该元素时记录了 true。我们已修复它,以便在执行事件处理程序之前更新 checked 属性。

示例

var $radios = jQuery(".example");
var $firstRadio = $radios.first();
var firstCheckedState = $firstRadio.prop("checked");
$radio.on("click", function() {
  // true in <3.4.0
  console.log($firstRadio.prop("checked") === firstCheckedState);
});
$radios.eq(1).click();

次要漏洞修复:Object.prototype 污染

jQuery 3.4.0 包含对使用 jQuery.extend(true, {}, ...) 时某些意外行为的修复。如果未经过清理的源对象包含一个可枚举的 __proto__ 属性,它可能会扩展本机 Object.prototype。此修复包含在 jQuery 3.4.0 中,但 补丁差异 存在于以前的 jQuery 版本中。

示例

jQuery.extend(true, {},
  JSON.parse('{"__proto__": {"test": true}}')
);
console.log( "test" in {} ); // true

请注意,虽然 jQuery 会尽最大努力保护用户免受安全漏洞的影响,但 jQuery 是一个 DOM 操作库,通常会按照您指示的方式执行。在这种情况下,该行为可能是不期望的,因此 jQuery.extend 将不再写入任何名为 __proto__ 的属性。但是,这种保护措施不能替代良好的安全实践,例如用户输入清理。

弃用位置选择器和 Sizzle 的日落

jQuery 的基本 API 是选择一些内容,然后对所选内容执行一些操作。Sizzle 是 jQuery 中的选择器引擎,它处理第一部分。它是一个快速高效的引擎,为本机选择器 API(如 querySelectorAll 以及其他本机 JavaScript 和 CSS 选择器)铺平了道路。现在,许多这些选择器已经进入了现代浏览器,我们几乎可以告别 Sizzle 了。但是,为了在 jQuery 4.0 中删除 Sizzle,我们还需要删除我们所说的位置选择器,这些是非标准选择器。

具体来说,jQuery 3.4.0 正在弃用 :first:last:eq:even:odd:lt:gt:nth。当删除 Sizzle 时,我们将用一个围绕 querySelectorAll 的小包装器来替换它,并且在没有更大的选择器引擎的情况下几乎不可能重新实现这些选择器。

我们认为这种权衡是值得的。请记住,我们仍然支持位置方法,例如 .first.last.eq。您可以使用位置方法来代替位置选择器执行任何操作。无论如何,它们性能更好。

升级

从 jQuery 3.0+ 升级时,不应存在兼容性问题。如果您尚未升级到 jQuery 3+,请查看 3.0 升级指南jQuery Migrate 3.0 插件 将帮助您识别代码中的兼容性问题。

请尝试使用此新版本,并 告知我们您遇到的任何问题

下载

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

https://code.jqueryjs.cn/jquery-3.4.0.js

https://code.jqueryjs.cn/jquery-3.4.0.min.js

您也可以从 npm 获取此版本

npm install jquery@3.4.0

精简版

有时您不需要 ajax,或者您更喜欢使用许多专注于 ajax 请求的独立库。而且,通常使用 CSS 和类操作进行 Web 动画更简单。除了包含 ajax 和效果模块的常规 jQuery 版本之外,我们还发布了一个“精简”版本,该版本排除了这些模块。如今,jQuery 的大小很少成为加载性能问题,但精简版本比常规版本小约 6k 压缩字节。这些文件也可用在 npm 包和 CDN 上

https://code.jqueryjs.cn/jquery-3.4.0.slim.js

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

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

感谢

感谢所有参与此版本发布的人员,他们提交了补丁、报告了错误或进行了测试,包括 abnud1Jason Bedardbuddh4Kris BorchersAndrei FangliOleg GaidarenkoRichard GibsonMichal Golebiowski-OwczarekMarja HölttäDave MethvinEd SLuis Emilio Velasco SanchezSaptak Senguptatmybr11Bert Zhang 以及整个 jQuery 团队。

变更日志

GitHub changelog: 3.4.0 中修复的问题 | 所有更改

Ajax

  • 允许在脚本传输中使用自定义属性(#30281f4375a3
  • 修复 IE11 中的 getResponseHeader(key)(#3403e0d94115

核心

  • 使用 isAttached 检查元素的附加情况(662083ed
  • jQuery.extend / jQuery.fn.extend 的微小效率修复(#42454ffb1df8
  • 在 DOM 操作中保留 CSP nonce 属性(#432300504037
  • 在 DOM 操作中保留 CSP nonce(#3541c7c2855e
  • 支持通过 jQuery.globalEval 传递 nonce(#42785bdc85b8
  • 识别 Shadow DOM 中的附加检查(#35049b77def5
  • 防止 Object.prototype 污染,用于 $.extend( true, … )(753d591a

CSS

  • 确保 CSS 变量的驼峰式和连字符式名称不合并(f8c1e902
  • 避免填充 jQuery.cssProps(#39862b5f5d5e
  • 正确检测具有非默认缩放的卷曲框支持(#4029821bf343
  • 不要为动画的非元素属性附加“px”(#406375b77b48
  • 跳过为动画的非元素属性附加“px”的逻辑(f5e36bd8
  • 避免在 width/height 获取器中强制重新布局,除非必要(#4322a0abd15b
  • 除非必要,否则不要读取 styles.position 在 width/height cssHook 中(#4185354f6036
  • 不要为可能无单位的 CSS 网格属性附加“px”(#4007f997241f

Dimensions

  • 修复计算 SVG 的外宽(#3964e743cbd2
  • 避免在设置 width/height 时获取 boxSizing – 这避免了在某些情况下强制重新布局(#399173d7e625
  • 回退到 border-box 的 offsetWidth/Height,用于 IE(#4102315199c1

事件

  • 防止 leverageNative 触发 focusin 两次(fe5f04de
  • 向 Event 对象添加“code”属性(#3978899c56f6
  • 利用本机事件进行 focus/blur/click;传播其他数据(#1741#3423#3751#4139669f720e
  • 在 DOM 操作中尊重脚本 nomodule 属性(#4281e4de8b46
  • 恢复 _evalUrl jQuery.ajax 调用到 dataType:script(13de7c9e
  • 仅评估 HTTP 成功的脚本 src(#4126c2026b11

操作

  • 正确检测具有单字符名称的 HTML 元素(#4124979809c5

其他

  • 添加 lockbot 配置(2348f399
  • 更新许可证序言/结尾以安抚 Github 检查器(29e76e25

README

  • 向 README.md 添加 gitter 徽章(7869f83d
  • 添加 FOSSA 许可证扫描状态徽章(45f08588

选择器

序列化

  • jQuery.param:当给定 null/undefined 时返回空字符串(#26330645099e

Traversing

内部

  • 更新 uglify 及其选项(09684ba3
  • 删除不必要的 ESLint 异常(dc05f3c1
  • 在 jsdom 中运行基本测试套件(0ec25abb
  • 删除手动 QUnit 固定程序重置(84b6a0be
  • 使 Promises/A+ 测试使用点报告器而不是默认报告器(ca9356ec
  • 将 QUnit 从 1.23.1 更新到 2.9.2(6ced2639
  • 在 Node.js 10 而不是 8 上运行 Karma 浏览器测试(16ad9889
  • 更新 jsdom;将使用 Symbol polyfill 的测试迁移到 iframe 测试(9cb124ed
  • 删除过时的全局变量的 ESLint 配置(c10945d0
  • 更新大多数依赖项(8751e9ef
  • 更新测试代码以与 QUnit 2.x 兼容(c3498187
  • 建议在 JS Bin 或 CodePen 上创建测试用例,放弃 JSFiddle(da44ff39

jQuery CDN 中 jQuery 1.9.1 的错误 map 文件

发布于 作者

很久以前,Mike Taylor 指出 jQuery CDN 包含一个错误的 map 文件引用的 jQuery 1.9.1 的压缩版本。基本上,它引用的是 jQuery 1.11.1 的 map 文件,这显然是错误的。如果您正在尝试调试使用压缩的 jQuery 1.9.1 文件的站点,开发工具会感到非常困惑,使本来就困难的任务更加困难。

您可能会认为我们可以直接编辑 https://code.jqueryjs.cn/jquery-1.9.1.min.js 文件以指向正确的 map 文件,该文件确实存在于 https://code.jqueryjs.cn/jquery-1.9.1.min.map。这样做至少存在两个问题。首先,由于假设一旦发布后该文件将永远不会更改,因此该文件已经在互联网上被广泛缓存。即使我们编辑了文件,JavaScript 和 map 文件可能也永远无法在它们被使用的地方更新。

第二个问题甚至更严重。我们一直提倡开发者使用 脚本的 integrity 属性,以确保您包含的文件自您最初编写脚本标签以来没有被修改。如果修改了文件的内容,此属性将不正确,并且页面将不再包含该文件。这可能会完全破坏页面!考虑到 jQuery 1.9.1 的年龄,其中许多包含此文件的页面可能没有得到积极维护。因此,我们不能认真考虑以任何方式更改 JavaScript 文件,甚至一个字节。

最不具破坏性的选择是删除 jQuery 1.9.1 压缩文件引用的 jquery.min.map 文件。这不会影响 jQuery 是否能在站点的访问者那里正确运行。它只会禁用源映射。由于将 sourceMappingURL map 引用包含在经常复制到其他地方的 CDN JavaScript 文件中存在这些陷阱,我们不再包含它。

如果您需要调试使用这些压缩文件之一的站点,可以在 Chrome 中手动关联 map 文件。打开压缩的源文件,右键单击压缩源的区域,然后选择“添加源映射…”。

错误的 jquery.min.map 文件已从 jQuery CDN 中删除。我们预计删除此文件不会有任何可观察到的变化,除了恢复使用 jQuery 1.9.1 的站点进行调试的理智。jQuery 1.11.1 压缩文件不引用其 map 文件,因此它将继续正常工作,您可以如上所述关联 map 文件。

由于 CDN 和互联网上的缓存非常激进,您可能仍然会看到此 map 文件一段时间。如果您看到任何不寻常的行为,您认为与缺失的 jquery.min.map 文件有关,您可以 在 CDN 问题跟踪器上提交工单