jQuery已於2013/1/15釋出1.9版~

有趣的是,1.9版最值得關注的,倒不是又增加什麼新東西,而是它拿掉哪些舊東西!! 1.9版移除或變動了不少舊API,升級後可能導致現有程式無法相容,為此官方一併釋出升級指南(延伸閱讀: 我的升級筆記[稍後補上])以及升級Plugin(jQuery Migrate)協助開發者避雷保身。

之前預告過,jQuery 1.9將是最後一個支援IE 6/7/8的版本(簡稱"老IE", oldIE),從jQuery 2.0起(註: 2.0現在仍0處Beta階段),將只支援IE 9+及其他HTML5瀏覽器。(XP User要哭了! 不,是規格書要求支援IE6/7/8的網站開發者要嘆氣了!)

1.9跟2.0這兩個版本的關係比較特殊,不像以前的新舊版,基本上二者API相同,可替換使用,最重要的差別在於jQuery 1.9仍能在IE 6/7/8(老IE)上執行,但jQuery 2.0不支援老IE,犠牲了對老IE的相容性換取更小的程式庫體積、更快的執行速度。結論是,開發者可以在不修改程式直接切換jQuery 1.9及2.0(因為二者API相同),抉擇關鍵在於1.9雖能相容老IE但較痴肥緩慢,如果開發者人品好到不需理會老IE(例如: 只針對行動裝置瀏覽器的情境),則建議改用2.0享受其輕巧快速。

兩全其美的做法是用以下寫法見人說人話,見鬼說鬼話...

<!--[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]—>

由於jQuery 1.9正式移掉不少了過去標註為過時(deprecated)的API,如果你目前程式已經避用過時API,升級到1.9不會有什麼大問題,但大部分開發者沒這麼好運,多年累積下來的程式少不涉及舊API,此時jQuery Migrate可幫上大忙,蒐羅了1.6.4以來存在但1.9已不支援的老API。在使用jQuery 1.9/2.0時,一併載入jQuery Migrate,可以不用改程式繼續使用大部分被1.9移除或更動的老舊API,還能透過console.log記錄程式使用到哪些1.9不相容API,做為修改的參考。(註: 使用jQuery Migrate上線版(Production version, jquery-migrate-1.0.0.min.js)只提供相容而不產生警告訊息,要使用開發版未壓縮的jquery-migrate-1.0.0.js,才會在console留下如JQMIGRATE: jQuery.browser is deprecated的警告訊息,詳細的不相容訊息及解決方法可以參考官方文件)

以下是jQuery 1.9的新東西及改變: (api.jquery.com的文件需要幾週才會補齊)

  1. API整頓與革新
    移掉了很多老舊及瞹眛的API(詳見升級指南)
  2. 可以一次取回多個CSS屬性
    .css(CSS屬性名稱陣列)可傳回多個CSS屬性值的物件
    var cssDictionary = $("#boo").css(["width","height","color"]);
    cssDictionary將得到如下內容
    {width:"100px",height:"50px",color:"#ff00ff"}
  3. 強化CSS3選擇器跨瀏覽器支援
    讓:nth-last-child, :nth-of_type, :nth-last-of-type, :first-of-type, :last-of-type, :only-of-type, :target, :root及:lang在老賊瀏覽器IE6嘛也通
  4. 新增.finish()
    立即結束所有仍在佇列中的動畫
  5. 支援Source Map
    讓壓縮版(Minified)版的jquery-1.9.0.min.js在偵錯時也能對應到正確的原始程式碼。Source Map原理可參考阮一峰先生的文章,但目前只有Chrome支援。
  6. 修好一籮筐的Bug~

祝大家升級愉快~


Comments

# by 布丁布丁吃布丁

長知識了,非常實用

Post a comment