jQuery 2.0 Beta 3 发布
我们正在为 jQuery 2.0 的发布做最后的冲刺!今天发布了 Beta 3。
借用 Dirty Harry 的话:我知道你在想什么。“Beta 3 会不会破坏我的代码?” 嗯,说实话,在这么激动人心的时刻,我们可能忽略了一些细节,并引入了一些错误。所以,因为这是 jQuery,世界上最强大的 JavaScript 库,它可能将你的网站从互联网上彻底删除,所以你必须问自己一个问题:“我是否幸运?” 嗯,你认为呢?
我们不想意外地将你的网站从互联网上删除;不要指望幸运。这意味着我们非常需要你的帮助来发现并修复可能潜藏在 jQuery 2.0 的角落和缝隙中的任何错误。我们希望在正式发布之前解决所有问题,而唯一的方法是找出它是否与你的代码一起运行。
你可以在 jQuery CDN 获取这个最新版本:https://code.jqueryjs.cn/jquery-2.0.0-beta3.js
你也可以使用 jQuery Migrate 插件 与 jQuery 2.0 一起使用,以恢复来自旧版本中的弃用功能,并/或诊断兼容性问题。我们强烈建议你对旧代码使用 Migrate,它将节省调试中的大量时间和麻烦。
保持同步
请记住,jQuery 2.0将无法在 IE 6、7 或 8 上运行。你必须在“现代”模式下运行 Internet Explorer 9 或 10,并且不使用 X-UA-Compatible 功能,例如,强制 IE10 进入 IE7 模式。
jQuery 团队将继续同时支持 jQuery 1.x 和 2.x 线,只要那些旧版本的 IE 仍然是一个因素。当前发布的 jQuery 1.x 版本(1.9.1)具有与 jQuery 2.0 相同的 API。我们计划在几个月内对 1.x 线进行 1.10 更新,以解决两个版本之间任何细微的差异。在那时,我们仍然会保持两条线的同步:1.10 和 2.0、1.11 和 2.1,等等。
如果你想在仍然需要支持 IE 6、7 和 8 的网站上尝试 jQuery 2.0,可以使用条件注释。除旧 IE 之外的所有浏览器都将获取第二个脚本并忽略第一个
<!--[if lt IE 9]> <script src="jquery-1.9.1.js"></script> <![endif]--> <!--[if gte IE 9]><!--> <script src="jquery-2.0.0b3.js"></script> <!--<![endif]-->
但是请记住,jQuery 1.x 仍然适用于 jQuery 支持所有浏览器。
新增功能
以下是自 Beta 2 以来的一些主要变化
Node.js 兼容性。如果 jquery.js 文件通过require()
包含在 Node 中,它将导出 jQuery 对象。
Windows 8 Store 应用兼容性。一些仅在 IE 6/7/8 中需要的功能检测已删除,以防止 Windows Store 应用中的安全异常。
更多错误修复。此 Beta 包含自 jQuery 2.0 beta 2 和 jQuery 1.9.1 发布以来报告的错误的修复程序。完整的列表如下。
删除 jQuery.support.boxModel。自 jQuery 1.3 以来,任何人都应该使用此属性,因为它已被弃用,而 jQuery 本身从未支持 Quirks 模式。
对代码进行进一步的修剪和调整。修复错误通常会增加更多字节,但我们能够通过几十个字节实际减少完整缩小/gzip 版本的大小。
wrap 方法现在可以在自定义构建中排除。如果你(和使用的插件)没有调用任何 wrap 方法,例如.wrapAll()
或.unwrap()
,你可以将其从自定义构建中排除。
自定义构建小于 10k 字节!如果你能够排除所有可选模块,你将获得一个自定义构建,在缩小和 gzip 后仅为 9,226 字节。查看 beta 2 博客文章,了解如何进行自定义构建的更多信息。
完整的提交列表可在 GitHub 上找到,已关闭的错误单列在下面。感谢 Rick Waldron、Michal Golebiowski、Li Xudong、Timmy Willison、Nguyen Phuc Lam、Steven Benner、Tom Fuertes、Richard Gibson、Scott González 和 Oleg Gaidarenko 对此 Beta 的贡献。
Ajax
- #13388: Ajax 请求未返回 responseXML
- #13276: 在 IE 9/10 中,$.parseXML() 返回文档对象而不是 XMLDOMDocument
- #13292: 在 1.9.0 中,$.ajax 在 204 的情况下不再调用 success 函数
- #13306: 文件输入添加到序列化表单会导致行为发生变化,并且只遵循规范的一半
构建
- #12656: 使事件缩写成为可排除模块
- #13316: 使用 TestSwarm 检查 jquery.min.js
- #13335: “use strict”; 在 FF 中中断 asp.net ajax postacks
- #13744: 将 jQuery.fn.size() 移动到已弃用
核心
Css
Deferred
效果
事件
- #13360: 创建 String.prototype.namespace 会导致 jQuery.Event 中出现异常
- #11570: 将元素缓存移动到 element[expando] 以避免清理并减少代码。
- #13143: e.target 可以是鼠标滚轮上的文本节点
- #13554: 将 [un]bind & [un]delegate 移动到 event-alias
操作
- #13232: 在 2.0beta1 中,对 tbody 选择器使用 html() 函数会导致插入新的 tbody
- #13233: 在 jquery 1.9 中,遍历和操作分离节点时出现意外行为
- #13282: QtWebKit — TypeError: “[object Object]” 不是 “Function.prototype.apply” 的有效参数 (评估 “elem.nodeType”)
- #13721: remove(“:nth-child(1)”) 的工作方式不同于 filter(“:nth-child(1)”).remove()
- #13741: 使 wrap*/unwrap 方法成为可选模块
选择器
- #13434: 创建 querySelectorAll/matchesSelector 选择器选项
- #13331: jQuery.fn.add 在 Chrome 和 Safari 中返回不正确的顺序
- #13378: ie8 & ie9 iframe — .filter(“:focus”) — document.activeElement 返回未指定的错误。
- #13420: jQuery 1.9.1 无法在使用 .parent() 和 .closest() 时通过类名过滤 SVG 父节点
- #13499: 当搜索的 ID 不存在但 NAME 存在时,后代选择器会失败 (仅 IE7)
- #13505: jquery#add: 在较大的列表中,似乎使集合中的项目无序
支持
- #10814: 使 support 尽可能地延迟,并考虑到闭包
- #12040: 测试内容安全策略 (CSP)
- #13089: support 在 Chrome/Safari 中向 body 添加 zoom 样式
- #13743: 删除 jQuery.support.boxModel
遍历
- #13265: parent 方法在 IE10 中使用文本节点时失败
- #13332: .closest(“*”) 即使对于非元素节点也会产生输入
- #13349: 自 1.9.0 以来,find 函数变慢,特别是在 Chrome 中
“Node.js 兼容性。如果 jquery.js 文件通过 require() 包含在 Node 中,它将导出 jQuery 对象。”
那我们是否会获得一个官方的 jQuery 包到 npm 呢?Browserify 用户会很喜欢它。
很高兴看到弃用旧的 IE。
恭喜,很高兴开始测试。而且我很喜欢弃用 IE9 之前的版本。
请不要再使用这个 bugtracker:http://bugs.jquery.com/ticket/13089
“您要查找的页面暂时不可用。
请稍后再试。”
请在 github.com 上激活您的仓库中的问题功能。
最令人兴奋的新功能之一:IE 弃用。谢谢你们!
直接杀了 IE 吧 lol。爱你们 jQuery
下一个更新什么时候发布?
您好,
Windows 8 应用商店的兼容性是否已完成?
我希望没有,因为我仍然在使用 appendTo 的 1.8.1-win8 版本的应用程序中遇到安全异常,这是由于某些 KnockOutJS 代码造成的……?!
我还没有调试它以查看到底是哪个绑定失败了,但我有很多代码做了诸如条件文本和属性绑定之类的事情,这些代码在某些时候会导致 append(Child) 抛出安全异常。 :(
谢谢
@dada,请在 bugs.jquery.com 上创建一个工单,并提供一个简单的测试用例,以便我们进行调试。 不应该在这里报告错误。
我本来还以为会弃用旧 IE 呢。
为什么 IE 总是这么让人沮丧? 他们就不能做一个正常的浏览器吗?