jQuery 1.8、1.9 与 2.0 特性概览,2.0 将移除对 IE6/7/8 的支持

阅读数:14808 2012 年 7 月 15 日

话题:语言 & 开发架构

近日,jQuery Core 团队发布了 jQuery 1.8 Beta 1。其代码位于 jQuery CDN 上,地址是 http://code.jquery.com/jquery-1.8b1.js。GA 版预计于这个月发布。jQuery Core 团队还谈到了他们对于 jQuery 下一个版本 1.9 与 2.0 的规划,并且提到将要移除对 IE6/7/8 的支持。

jQuery 1.8

下面是 1.8 版值得关注的一些变化。

定制化

jQuery 1.8 有一个基于grunt的全新构建系统,你可以通过它轻松构建自定义的 jQuery 版本。你现在可以将不需要的模块排除在外以使得 jQuery 尽可能地小。要想构建自己的自定义版本,请克隆 jQuery repo 并使用 grunt 将不需要的模块排除掉。可选的模块有 ajax、css、dimensions、effects 与 offset。比如说,要想移除所有可选的模块,使用的命令将会如下所示:

git clone git://github.com/jquery/jquery.git
cd jquery && npm install
grunt custom:-ajax,-css,-deprecated,-dimensions,-effects,-offset

这样会生成一个只有约 21KB 大小的定制化 jQuery(最小化且经过 gzip 压缩)。注意到该功能是面向高级用户的,因为你必须得清楚项目的依赖关系,特别是所用的第三方插件之间的依赖关系。感兴趣的读者可以阅读jQuery README文件以了解完整信息。

自动化的厂商 CSS 前缀

$.css() 会自动接收不带前缀的属性名,然后生成适合于当前浏览器的前缀。Web 开发者将不必关心所有特定于厂商的属性名了。比如说在 Chrome 中,jQuery 调用 $("#myscroll").css("marquee-direction", "backwards") 会将该 CSS 设为 -webkit-marquee-direction: backwards。

$.Animation

jQuery 动画代码得到了清理和增强,这是通过使用几个扩展点来实现的,这些扩展点能够简化动画的添加与修改。如果需要支持没有内建动画的老式浏览器,那么新的 $.Animation 则提供了坚实的基础。如果你只需要支持现代浏览器并且使用原生支持的动画,那么你可以完全忽略掉动画模块。注意,$.Animation 相关的文档还在编写当中。

Sizzle 选择器引擎更新

Sizzle 是 jQuery 的 CSS 选择器引擎,在 1.8 版中它进行了一次较大规模的重写。重写的结果是对选择器匹配带来了性能上的提升,同时改进了大多数常见选择器的快捷方式。

XSS 防护

jQuery 1.8 引入了新的方法 $.parseHTML,你可以通过它将输入指定为 HTML,并且知道他们将会被解析为 HTML。这是 $() 无法做到的,因为它还会将输入字符串解析为选择器。$.parseHTML 还提供了一种方式将 HTML 解析为 DOM 块并控制脚本的执行。我们强烈建议大家使用 $.parseHTML,特别是输入来自于不受信任的源如 URL 或是用户输入的情况下。jQuery 1.9 做出了很多变化以实现更好的 XSS 防护,下文将会对其进行详述。

全局 Ajax 事件的附加

全局 Ajax 事件,如由 $.ajax 触发的 ajaxStart,目前可以附加到任何元素上了——甚至是不在文档中的元素。这会导致效率的低下,因此 jQuery 1.8 将不建议使用该行为。

jQuery 1.9

下面是 1.9 版的规划,该版本将于 2013 年初发布。

XSS 防护

根据设计,$() 方法可以创建 HTML 元素并运行脚本(如果传递进来的是 <script> 标签)。但开发者有时会忘记这一点,将来自不受信任源的字符串传递给 jQuery,这会导致跨站脚本(XSS)攻击。在 jQuery 1.9 中,对 $() 方法来说“看起来像是 HTML”的规则将会得到更加严格的处理。一个字符串只有第一个字母是小于号才会被当作是 HTML,否则就会被当作是 CSS 选择器。由于根据这些更加严格的规则,某些 HTML 字符串将无法被 $() 识别出来,因此请确保在使用该功能时仔细检查你的代码,也可以使用 $.parseHTML 作为替代函数。

移除 $.browser 与 $.sub

从 jQuery 1.3 开始,$.browser 就不建议被使用了,并且将于 jQuery 1.9 被移除。还在使用 $.browser 的开发者应该看看 $.support 或Modernizr以进行特性检测。其他选择有使用jQuery 1.9 compatibility 插件、或是直接读取 navigator.userAgent 字符串。

从 jQuery 1.7 开始,$.sub 就不建议被使用了,并且将于 jQuery 1.9 被移除。该函数会创建 jQuery 的一个新副本,其属性与方法可以被修改,同时又不会影响到原来的 jQuery 对象。事实证明,该函数并不是那么有用,因此将会被移到 1.9 compatibility 插件中。我们期望在移除掉这么多不建议使用的条目后,jQuery 1.9 的文件尺寸能够变得更小一些。

jQuery 2.0

下面是 2.0 版的规划,该版本将于 2013 年初发布,就在 jQuery 1.9 发布之后不久。

移除对 IE6/IE7/IE8 的支持

jQuery 2.0 所支持的 APIs 与 jQuery 1.9 一样。它并不会增加什么主要的特性,但却会移除对 IE 6/7/8 怪癖的支持,比如说臭名昭著的事件模型、IE7 的“attroperties”、HTML5 shims 等等。1.9 与 2.0 的目标是对于他们所支持的 API 来说能够实现互换。jQuery 2.0 将会更小、更快,同时不再有为了支持 IE6/7/8 所引入的那些问题。如果需要支持 IE6/7/8,那么请选择 1.9;否则,你既可以使用 1.9 也可以使用 2.0。你还可以通过条件注释在使用 IE6/7/8 时只包含进 1.9。

	<!--[if lt IE 9]>
		<script src="jquery-1.9.0.js">
	<![endif]-->
	<!--[if gte IE 9]><!-->
		<script src="jquery-2.0.0.js"><
	<!--

即便在 jQuery 2.0 发布后,jQuery 团队也将会继续支持和维护 1.9,只要 IE6/7/8 的影响还在就不会停止对其的支持。jQuery 团队并未计划未来添加大量的新 APIs,新的功能将会以兼容于 1.9 与 2.0 的插件的形式添加进来。

要想了解更多信息,请阅读jQuery 1.8 Beta 1: See What's Coming (And Going!)jQuery Core: Version 1.9 And Beyond

查看英文原文:What's Upcoming in jQuery 1.8, 1.9 and 2.0, and the Removal of IE6/7/8 Support