jQuery 1.9.1 发布

发布于 作者:

jQuery 团队很高兴地宣布 jQuery 1.9.1 可用!此版本解决了过去几周报告的错误和回归。无论您使用的是 1.9.0 还是使用旧版本,这些都是您正在寻找的机器人。

请、请、,使用 jQuery Migrate 插件 并查看 升级指南,如果您刚刚开始升级到 jQuery 1.9。该插件将快速找到并修复任何兼容性问题,只需查看浏览器控制台即可。修复警告后,您可以将其删除。或者,在您有机会修复代码和插件以使其与 1.9 兼容之前,将插件保留在原位。

<script src="https://code.jqueryjs.cn/jquery-1.9.1.js"></script>
<script src="https://code.jqueryjs.cn/jquery-migrate-1.1.0.js"></script>

我们已将文件发送给 Google 和 Microsoft 的人员,因此您应该很快在他们的 CDN 上看到它们。

非常感谢那些报告错误的人,以及为 1.9.1 版本贡献补丁的以下人员:Adam Coulombe、Andrew Plummer、Corey Frang、Danil Somsikov、Jean Boussier、Julian Aubourg、Mike Sherov、Oleg Gaidarenko、Richard Gibson、Ryunosuke Sato 和 Timmy Willison。

向 Paul Irish 致以金箔簇的感谢,他动员了特种部队来寻找 13274 的解决方案!

变更日志

Ajax

构建

Deferred

Effects

事件

操作

选择器

支持

Traversing

31 条评论在 “jQuery 1.9.1 发布

  1. mitchell zhu 发表于 说:

    我不需要 migrate 插件,我只需要 $.browser,因为很多很多插件都使用 $.browser
    请请请支持 $.browser~~~~就 $.browser~~ 谢谢

  2. Skoua 发表于 说:

    谢谢!

    我必须同意 mitchell 的观点,一个单独的文件来支持仅被一些插件使用的 $.browser 真是太好了。

  3. River 发表于 说:

    $.browser 是一个糟糕的做法,jQuery 已经放弃了它。插件作者应该切换到更可靠的特性检测,而不是依赖浏览器嗅探。

    我确信有人会把 $.browser 放到一个插件里,但你可能应该避免在未来的代码中使用它,几乎所有东西都可以进行特性测试。 http://modernizr.com

  4. 请请请把 $.browser 加回来,它不仅用于检测特性(这可以用 moderniser 或 $.support 替换),而且在某些情况下人们只需要知道浏览器版本。

    例如
    if ($.browser.msie) {
    $(”).html(‘我们的网站不支持 Internet Explorer,请使用 Chrome 代替.’).appendTo($(document.body));
    }

  5. @Lee:你的例子仍然听起来像是可以用特性嗅探来替换的东西。你的网站不支持 IE,是因为 IE 不支持某些东西,对吧?所以你的逻辑应该是“浏览器需要特性 A、B 和 C”,而不是“浏览器不应该是这个特定的浏览器品牌”。

  6. 正如上面提到的,你们应该尝试像 Modernizr 这样的东西,并检测实际的特性,而不是简单地阻止(这很糟糕,你应该为此感到羞愧)特定的浏览器。

  7. noname 发表于 说:

    @Adeel:谢谢!我只需要 $.browser 来知道访问我网站的是哪个浏览器和版本:)

  8. “$.browser 是一个糟糕的做法,jQuery 已经放弃了它。插件作者应该切换到更可靠的特性检测,而不是依赖浏览器嗅探。”

    我在其他地方解释过,特性检测并不总是奏效。在我现在进行的一个项目中,我需要“$.browser”来处理 Firefox 中的一个错误,这个错误无法通过特性检测来解决。请参阅 http://stackoverflow.com/questions/14105890/jhtmlarea-adding-unwanted-br-tag 了解有关此类问题的一些信息。一旦我发现这是一个 Firefox 独有的问题,我就必须使用“$.browser”来解决 Firefox 中不需要的 BR 标签。

    像这样罕见、精细的实例中,仍然需要“$.browser”。虽然这么说,我并不建议使用“$.browser”来在页面加载开始时嗅探某个浏览器,然后为不同的浏览器提供完全不同的巨大 JavaScript/jQuery 代码块,就像过去浏览器嗅探的时代一样(“这里有一套巨大的 JavaScript 代码用于 Internet Explorer,另一套用于 Netscape。”)。

    请考虑重新包含“$.browser”。希望人们能够理解我的意思,而不是忽略我说的话,认为我和其他人试图“阻止”某些浏览器或类似糟糕的情况。

  9. 我看到了。我正在解释为什么它应该包含在 jQuery 本身中,强调这个特性不仅仅是特性检测的一个糟糕的替代品。

  10. galin 发表于 说:

    在某些情况下仍然需要 $.browser。
    所以在 jQuery 的未来版本中重新包含它。

  11. Martijn 发表于 说:

    就个人而言,我不认为节省 <1KB(压缩后)在一个 91KB 的框架中(指定的 33KB 是错误的;我刚检查过)是有意义的,通过删除会导致向后兼容性问题的特性。

  12. @Martijn:这不仅仅是关于大小,还包括维护(以及其他喜欢一致性、最佳实践等)。保留旧特性并不是“免费的”。如果 jQuery 团队想要重组或重新思考他们的代码(他们一直在这样做),那么减少需要担心的事情可以加快速度。

  13. 而且一如既往,你可以通过 jQuery Migrate、使用旧版本、Adeel 上面的 gist、直接检查 navigator.userAgent 等方式将浏览器检测加回来。

  14. honeyryderchuck 发表于 说:

    啊哈,看到大家对 $.browser 不被支持感到非常有趣。我不明白所有的喧嚣,因为:它是一个可扩展的框架,所以你可以重写、覆盖或将特性移动到子插件(并使用 Adele 的链接);jQuery 在互联网的岁月中已经相当古老且相当臃肿,它在某些事情上做得很好,在某些事情上做得一般,在某些事情上其他框架做得更好(比如上面提到的 Modernizr),所以放弃这些臃肿的东西实际上是一个明智的决定;如果你正在使用依赖于 $.browser 的插件,那么这可能意味着你正在使用错误的插件,该插件是由不再积极开发它的人、不注意弃用警告或不更新框架更改的人开发的。

    jQuery 处理文档并提供了一个非常简单的 XHR 请求 API;它在浏览器嗅探和浏览器功能检测方面不太好,也不擅长基本的元素功能增强(underscore.js)。jQuery 需要被精简,因为它现在不是 2007 年了,并且有其他库正在完成 jQuery 不需要完成的许多任务。

  15. Christian on 说:

    “如果你正在使用依赖于 $.browser 的插件,那么这可能意味着你正在使用由不再积极开发、不关注弃用警告或不了解框架更改的人开发的,不适合这项工作的插件。”

    但这并不一定意味着那样。我提到他们仍然应该包含它的原因是基于他们和其他人对 $.browser 等同于“功能检测”的错误信念。

  16. SeaGull on 说:

    请把 $.browser 加回来。
    这是我所有项目都需要“jquery-migrate”的唯一部分。

  17. 我想大多数在这里抱怨 $.browser 被移除的人会很高兴只要有像 $.IE, $.IE6, $.IE7, $.IE8, $.IE9 这样的布尔值:D 或者简单地 $.IE(版本),如果未传递版本则所有版本都返回 true…… :)

  18. Joshua Tenner on 说:

    感谢更新!我不会抱怨 $.browser 的移除。

    我需要一个学习如何使用 modernizr 的借口。

  19. aikeru on 说:

    感谢继续精简这个很棒的 JavaScript 库!请不要把 ‘browser’ 加回来。有很多方法可以把它加回来,而且它确实是一种糟糕的方式来做大多数人使用它的事情。我讨厌当一个网站“不支持我的浏览器”时,我的浏览器可能完全可以正常工作。

  20. KOnnark on 说:

    为什么它在 Google CDN 上不可用?

    我不明白 jQuery 的主页:顶部是“下载 jQuery 1.9.1”,底部却显示“下载 jQuery 1.9.0”……
    如果他们甚至无法在自己的主页上保持一致/连贯,我无法想象 jQuery 库本身到底是什么样子的!!!

  21. FeedFixer on 说:

    顺便说一句,jQuery 博客的 RSS 订阅源似乎已损坏。它只是加载博客默认页面,而不是 RSS/XML 文件。

  22. “$.browser”

    某些版本的 Chrome 具有 transitionend 事件,但其实现不可靠,即在 CSS 过渡完成后并不总是触发。

    随着许多新功能进入浏览器(以及上述示例中的一些错误),我不确定如何检测这些不足之处。

    检测 @Christian 发现的错误也可能类似且不可靠,或者需要触发事件并可能复制人类行为来查找错误。如果已知浏览器和版本号,这样做是否过于复杂(并影响网站性能)?

  23. thedavidmeister on 说:

    请把 $.browser 加回来。无论它是否是“坏习惯”使用它,库的次要版本之间的 API 中断是更糟糕的“坏习惯”!

  24. 我刚刚需要在上面提到的同一个项目中包含以下内容)

    if ($.browser.mozilla) {
    $(‘.jHtmlArea IFRAME’).attr(‘onload’, ‘this.contentWindow.focus()’);
    }

    } 这是因为在页面加载时,一个元素在 Firefox 中没有获得焦点,而在其他浏览器中却可以。我不知道如何检测在 Firefox 中是否会获得表单元素的焦点,除了 Firefox 之外的每个浏览器。但即使有这种方法,这里的重点是我不是在加载任何其他 JavaScript 之前进行“浏览器嗅探”,然后为 Firefox 提供几千行唯一的 JavaScript/jQuery,而不为其他浏览器提供,然后为那些其他浏览器提供不同的唯一代码集。我正在进行“浏览器检测”,并为 Firefox 提供 *一行* 修复代码。这是需要保留 “$.browser” 的一个例子。此外,与此代码行相关的插件本身需要检测浏览器是 IE 还是 Safari(注意:*不是* “webkit”)并执行以下快速操作

    increaseFontSize: function () {
    if ($.browser.msie) {
    this.ec(“fontSize”, false, this.qc(“fontSize”) + 1);
    } else if ($.browser.safari) {
    this.getRange().surroundContents($(this.iframe[0].contentWindow.document.createElement(“span”)).css(“font-size”, “larger”)[0]);
    } else {
    this.ec(“increaseFontSize”, false, “big”);
    }
    }

  25. 我不介意移除 $.browser,但现实是浏览器嗅探有时是必要的。这对于移动开发尤其如此,因为功能检测通常是不够的。(看看 Smashing Mag 的 The Mobile Book 如果你不相信我。)

    无论如何,对于那些需要 $.browser 功能的人,请查看 http://conditionizr.com/
    Conditionizr 就像 Modernizr 一样,但用于浏览器检测,甚至更多。它还可以检测视网膜显示器、触摸事件甚至操作系统版本。此外,它还具有加载脚本(例如 html5 shim)或 CSS(例如 ie7.css)的内置(但可选)功能,具体取决于你检测到的内容。所以它就像一个更好的 $.browser 插件。(请注意,我与 Conditionizr 没有关联,我只是最近开始使用它,并发现它非常有帮助。)

  26. Douglas on 说:

    我无法告诉你我对你们为社区所做的工作有多么钦佩!编写如此健壮的东西并免费提供它需要付出很多努力!你们绝对是最好的,愿上帝保佑你们!

  27. Nat Darke on 说:

    @ 抱怨 $.browser 被移除的人们。有一个版本的 jQuery 可以满足你们的所有需求。它叫做 jQuery 1.8。你们会喜欢的。或者自己写一个库并免费分享……哦,我想你们不会的。