IE 6.0/7.0/8.0 のサポートを打ち切った jQuery 2.0 がようやくリリースされました。


jQuery 公式ブログでの発表です: jQuery 2.0 Released(2014/4/19)

以下、上記ブログの内容をかいつまんで紹介します(簡訳しつつ、適宜説明を追加しています)。

jQuery バージョン 2.0 の最大の特長は、旧版の IE (IE6、IE7、IE8)のサポートを打ち切ったことです。これによって jQuery のサイズは小さくなり、高速になり、旧版IEとの互換性を保つためのコードに起因する問題を回避できるようになりました。

もちろん jQueryが旧版のIE のサポートをすべて打ち切ったわけではなく、今後は 2.0 と分岐したバージョン 1.xバージョンにより旧版の IE へのサポートも継続します。ちなみに現在の1.x系列のバージョンは 1.9、その次のバージョンは 1.10 → 1.11 → 1.12 となります。




【入手方法】

現時点では Google や Microsoft の CDN は利用できず(数日中に対応?)、直接ダウンロードするしかありません。

これをダウンロードして適当なディレクトリに置き、<script>タグでリンクを貼って使います。
たとえば js というディレクトに置いた場合、

<script type="text/javascript" src="js/jquery-2.0.0.min.js">
    alert("hello, 2.0");
</script>

として使います。

なお、下のアップグレード内の説明では jquery.com の CDN を使っていますが(元ブログのコードのまま)、これが妥当な方法かよくわかりません。jquery.com へ過大な負担をかけたくなければ避けた方がよいでしょう。

【アップグレード方法】

現在 1.9以前のバージョンを使ってる場合は、2.0 での変更点が多数あるため、アップグレードにはjQuery 1.9 Upgrade Guide(jQuery 1.9 アップグレードガイド(英文))を読んだうえ、jQuery Migrate plugin(jQueryミグレート(移行用)プラグイン)を使うことが望ましいとされています。

このプラグインは、jQuery をアップグレードしたことによる問題点を警告させるためのものです。

ミグレートプラグイン自体の使用方法は簡単で、htmlファイル中の jQuery の行の下に次のように プラグインを指定するだけです。

<script src="http://code.jquery.com/jquery-2.0.0.js"><script>
<script src="http://code.jquery.com/jquery-migrate-1.1.1.js"><script>

これでブラウザのコンソール画面に必要なメッセージ(警告等)が表示されます。

手持ちの適当なテスト用サイト( 2.zqn.cc/ )で試してみました。jQuery 1.7.1 から一気に 2.0.0 にアップグレードし、上記ミグレートプラグインを追加します。

<!– script src=”http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js”></script–>
<script src=”http://code.jquery.com/jquery-2.0.0.js”></script>
<script src=”http://code.jquery.com/jquery-migrate-1.1.1.js”></script>

<script src=”http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.js”></script>
<script src=”js/jquery.easing.1.3.js”></script>

Google ChromeのデベロッパーツールとIE の開発者ツールの各コンソールで表示してみます。


JQMIGRATE: jQuery.attFn is deprecated という警告(jQuery.attFn は非推奨(廃止予定))が出ました。
自分では attFn というメソッドを使っていませんが、おそらくjQuery-ui.js 内で使われているのでしょう。
実際、jQuery UI のドラッグメソッドが効かなくなってしまいました(´p`;)

本当はもっと警告がゾロゾロ出るのではと予想してたので、いささか拍子抜けしたくらいです。

【使い方】

jQuery 2.0 はモダン WEB 対応のためのものです。旧版ブラウザへの対応は jQuery 1.x で行い、さらに数年はサポートし続ける予定です。必要であれば、conditional coment trick(条件分岐コメントトリック)(下例)により、新ブラウザには 2.0 を、旧ブラウザには 1.9 を使うこともできます。しかし、普通に 1.9 を使うだけでも新旧両ブラウザに対応させることはできます(新ブラウザでの多少のパフォーマンス低下を気にしなければ)。

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




【2.0 の変更点】

  • IE 6/7/8 のサポート打ち切り

    IE8以前のサポート打ち切りが、IE9 や IE10 にも影響を及ぼす可能性があります。最新 IE の「互換性モード」で旧バージョンのエミュレーションを行っている場合です。これを避けるには、HTTPヘッダ、または X-UA-Compatibleタグを使うことです。HTTP ヘッダを使えば、ブラウザのパーサの再起動の可能性を避けることで多少のパフォーマンス改善にもつながります

    HTTPヘッダを使う(ページ先頭に<!doctype html>を追加して HTML5 文書だと認識させる)

    <!doctype html>
    <html>
        <head>
            <title>A standards mode webpage</title>
        </head>
        <body>
            <!-- This webpage displays in standards mode -->
        </body>
    </html>
    

    X-UA-Compatible タグを使う。詳しくはこちら

    <html>
        <head>
            <!-- Use Internet Explorer 9 Standards mode -->
            <meta http-equiv="x-ua-compatible" content="IE=9">
            <title>My webpage</title>
        </head>
        <body>
            <p>Content goes here.</p>
        </body>
    </html> 
    
  • ファイルサイズの削減

    2.0.0の最終サイズは 1.9.1 より 12% ファイルサイズが削減されています。これは IE6/7/8 に対応するためにだけ必要であったパッチを削減したことによるタマモノです。本当はさらに不要なコードを削ってパフォーマンス向上を図りたかったのですが、旧 Android と WebKit 2.x に足をひっぱられました。これをいつ切り捨てるかについては Android 2.xのシェア動向を注視しながら判断しますが、そう遠い将来の話ではないでしょう。

  • カスタムビルドによりさらなるサイズ削減が可能に

    バージョン1.8で登場したこの機能は大幅に洗練・拡張されました。今バージョンでは 12種類のモジュールの組み合わせでさらに小さなサイズのカスタムバージョンが作成可能になりました。新しい極小サイズのセレクタエンジン(基本的にはブラウザのquerySelectorAllAPI の最小限のラッパー)を使えば 10KB 以下にまでサイズ削減可能です(ミニファイ版&gzip時)。カスタムビルドの作成方法はこちら

  • jQuery 1.9 API との互換性維持

    jQuery 2.0 の API は、1.9 との互換性が維持されています。つまりjQuery 1.9 Upgrade Guide( jQuery 1.9 アップグレードガイド(英文))での変更点はすべてそのまま jQuery 2.0 にも適用できるということです。もしまだ 1.9 に移行していない場合は、まずそれをやった方が良いかもしれません。jQuery Migrate Pluginを使いましょう。

【今後の予定】

1.xブランチと2.xブランチとの間の API の違いを最小限にするという公約を守るため、数か月中に jQuery 1.10のリリースを予定しています。1.10は、1.9 と 2.0 (ベータ)で報告されたバグや、両者の API の相違点を修正するためのバージョンになります。

1.102.0のあとも 1.112.1等、対応バージョン間の機能互換性を維持して行きます。

なお、jQuery 創始者のジョン・レジグ氏は現在は jQuery の開発からは離れ、カーン・アカデミー(オンラインのフリー教育サイト)での開発にあたっています。