jQuery博客上的一个令人惊讶的公告中,团队决定jQuery 1.9将成为支持Internet Explorer旧版本的最新版本。 计划于2013年发布的jQuery 2.0将不再支持IE6、7和8。

从本质上讲,jQuery 2.0将是一个精简,更快的库,而不会像DOM选择例程,不同的事件模型和HTML5填充等旧的IE膨胀。 jQuery 1.9将继续开发并支持较旧的IE。 该小组建议您可以使用条件注释来支持所有浏览器,例如


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


没有人期望老版本的IE能够永远得到支持,有些人会为放弃多年浏览器而做出的决定表示赞赏。 但是该声明令人惊讶,原因有几个。

首先,尽管IE6和7的使用率已降至2%以下,但它们仍然是许多大型公司,政府部门和中国人的首选浏览器。 IE8到2013年可能会跌至10%以下,但它是Windows XP上可用的最新版本。 几乎三分之一的人使用该操作系统,尽管它快要死了,但它的持续时间比微软预期的要长得多。

[以下部分已修改。 感谢所有指出原始代码中错误的人。]

第二,有条件的评论。 真? 我们在2013年仍将依靠浏览器检测? 这种做法本应在1999年消失。有条件的评论只是暂时的修改,已在IE10中删除 。 JavaScript或服务器端浏览器嗅探也不是更好。

它还引入了针对同一库具有两个分支代码库的问题。 不可避免地,1.9和2.0之间会存在错误和差异,尤其是当jQuery扩展到那些版本之外时。 当您的代码可以在一个而不是另一个中工作时,您会怎么做?

第三:开发人员使用jQuery的主要原因是为了规避浏览器兼容性问题。 jQuery,Prototype,Mootools,YUI和类似库的最初目的是提供一组一致的对象和方法,以抽象出不同的浏览器API。 包装器围绕DOM选择和事件委托之类的功能放置,以消除实现方面的麻烦。

今天,现代浏览器之间的差异可以忽略不计。 考虑DOM querySelectorAll( CSS selector )方法; 它到处都受支持(即使在IE8中也是如此),并且总是比jQuery的$( CSS selector )更快。 遍历,操纵,事件和Ajax等核心JavaScript功能可在任何地方使用。 jQuery的动画和效果也可以用CSS3代替。 jQuery 2.0仍将提供有用的实用程序和兼容性修补程序,但是,如果没有旧版IE支持,则没有理由使用它。

第四是更新将引起的混乱。 当前,开发人员通常可以在不破坏其脚本的情况下迁移到最新版本。 不管jQuery 2.0收到多少宣传,很多人都会认为它比1.9版“更好”。 当他们的网站在IE7中失败时,他们将进行升级,然后痛苦地抱怨。

最后,如果jQuery 1.9可以在所有浏览器上运行,为什么还要麻烦jQuery 2.0却不能呢? 它的运行速度可能会快一些,但这种区别会明显吗? 该库已经非常有效,并在可用时使用本机API。

我可以理解此决定的动机,但2013年还为时过早。 jQuery之所以流行,是因为它支持旧版浏览器。 团队不应太仓促地放弃该政策。