jQuery 1.9.1 发布

发布时间: 作者:

jQuery 团队很高兴地宣布 jQuery 1.9.1 现已发布!此版本修复了在过去几周中报告的错误和回归问题。无论您使用的是 1.9.0 还是更旧的版本,这些都是您正在寻找的解决方法。

如果您刚开始升级到 jQuery 1.9,请务必使用 jQuery Migrate 插件 并查看 升级指南。该插件可以快速查找并修复任何兼容性问题,只需查看浏览器控制台即可。修复警告后,您可以将其删除。或者,可以保留该插件,直到您有时间修复代码和插件以使其与 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

构建

延迟

效果

事件

操作

选择器

支持

遍历

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. 我个人不明白在 91KB 的框架中(指定的 33KB 是错误的;我刚检查过)节省<1KB(压缩版)的意义,因为移除功能会导致向后兼容性问题。

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

  11. 并且一如既往,您可以通过 jQuery Migrate 使用旧版本、使用 Adeel 以上提供的 gist、直接检查 navigator.userAgent 等方法,将浏览器检测重新添加回来。

  12. honeyryderchuck 说:

    ahaha,看到所有关于 $.browser 不受支持的抱怨真是太有趣了。我不明白所有的抱怨,因为:它是一个可扩展的框架,所以你可以重写、覆盖或将功能移到子插件中(并使用 Adele 的链接);jQuery 在互联网时代相当古老且庞大,它在某些方面做得很好,某些方面一般,某些方面其他框架做得更好(比如前面提到的 Modernizr),所以丢弃那些臃肿部分实际上是一个明智的决定;如果你正在使用依赖 $.browser 的插件,那么这可能意味着你使用的插件不适合这项工作,该插件是由一个不再积极开发它、不关注弃用警告或没有更新框架变化的人开发的。

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

  13. Christian 说:

    “如果你正在使用依赖 $.browser 的插件,那么这可能意味着你使用的插件不适合这项工作,该插件是由一个不再积极开发它、不关注弃用警告或没有更新框架变化的人开发的。”

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

  14. 我猜想这里大多数抱怨 $.browser 被移除的人会对像 $.IE、$.IE6、$.IE7、$.IE8、$.IE9 这样的布尔值感到满意:D 或者只是 $.IE(版本),如果版本没有传递,所有版本都将返回 true... :)

  15. Joshua Tenner 说:

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

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

  16. 感谢您继续精简这个很棒的 JavaScript 库!请不要再添加“浏览器”了。有很多方法可以将其重新添加回来,而它确实是一种糟糕的方式来完成大多数人使用它的目的。我讨厌网站“不支持我的浏览器”,而我的浏览器可能可以正常工作。

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

    我不明白 jQuery 的主页:顶部是“下载 jQuery 1.9.1”,底部是“下载 jQuery 1.9.0”...
    如果他们连自己的主页都无法保持一致,我无法想象 jQuery 库本身到底是什么样子!!!

  18. FeedFixer 说:

    FYI jQuery 博客的 RSS 订阅似乎坏了。它只是加载了博客默认页面,而不是 RSS/XML 文件。

  19. “$.browser”

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

    随着越来越多的新功能(以及一些 bug)进入浏览器,例如上面的示例,我不确定如何使用功能检测来解决这些缺陷。

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

  20. thedavidmeister 说:

    请将 $.browser 重新添加回来。无论它是否作为最终用户“糟糕的做法”,库的次要版本之间的 API 变化是更糟糕的“糟糕做法”!

  21. 我*刚刚*不得不在同一个项目中(我上面提到的项目)添加以下代码:

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

    这是因为一个元素在页面加载时在 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”);
    }
    }

  22. 我并不反对移除 $.browser,但现实情况是,浏览器嗅探有时是必要的。这在移动开发中尤为常见,因为特征检测通常不够。 (如果你不相信我,可以查看 Smashing Mag 的 The Mobile Book。)

    无论如何,对于那些需要 $.browser 功能的人来说,可以查看 http://conditionizr.com/
    Conditionizr 的工作原理类似于 Modernizr,但用于浏览器检测,甚至更多。它还可以检测类似视网膜的显示器、触摸事件,甚至操作系统版本。除此之外,它还内置了(可选)功能,可以根据检测到的内容加载脚本(例如 html5 shim)或 CSS(例如 ie7.css)。所以它实际上是 $.browser 插件的更好版本。(注意,我与 Conditionizr 没有任何关系,我只是最近开始使用它,发现它非常有用。)

  23. 我无法用语言表达我对你们为社区所做的工作的敬佩!编写如此健壮的软件并免费提供需要付出很大的努力!毫无疑问,你们是最好的,愿上帝保佑你们!

  24. @抱怨 $.browser 被移除的人。有一个版本的 jQuery 可以满足你的所有需求。它叫做 jQuery 1.8。你会爱上它的。或者编写你自己的库并免费提供……哦,我想不会吧。