Prototype 1.6.1 RC2 が出てますね

3月29日に Prototype 1.6.1 RC2 が出てますね。 お知らせを適当に訳してみましょう。

Prototype 1.6.1 RC2: IE8 compatibility, Element storage, and bug fixes

Prototype 1.6.1 の最初のリリース候補版を公開しました。(RC1 はどうしたって?聞かないで) このリリースにはまだまだ小規模の修正が必要なのですが、IE8が先週リリースされちゃったので、暫定的な版をリリースすることにしました。

これは IE8 の「super-standards」モードに完全に対応し、かつ最適化された最初のリリースです。 とくに今回のリリースにより Prototype は、IE8 がサポートする Selectors API、その DOM Element のプロトタイプ拡張に対応します。

What’s new?

  • IE8に完全対応。Juriy は既存の IE"検出" チェックの多くを、完全なものに置き換えてくれました。これにより IE8 において「super-standards」モードと互換モードの両方を容易にサポートできます
  • 以前にアナウンスした Element storage。複雑なメタデータを個別の Element に対し、安全に関連付けることができます
  • mouseenter と mouseleave イベント。 IE独自のイベントをシミュレートしており、mouseover と mouseout イベントより便利に利用できそうです
  • あなたが新しいコピーで“cleanup”できるよう、DOM ノードを複製する Element#clone メソッド

What’s been improved?


詳細は CHANGELOG を参照してください。

上記にくわえ1.6.1 リリースでは、以前から作業されてきた2つの外部プロジェクト、Sprockets (JavaScript concatenation) と PDoc (inline documentation) が組み込まれます。 Sprockets はビルド時に Prototype を1つの配布用ファイルに結合するため、既に使用されています。 PDoc はこれからの我々の文書フレームワークとなるでしょう。 正式な API ドキュメントはまだ準備中ですが、1.6.1 の最終リリースには間に合うでしょう。

余談

What’s new からリンクされている Juriy Zaytsev さんの、Detecting event support without browser sniffing というエントリが興味深いです。

これまで JavaScript は「ブラウザを判別」して処理を分けることが多かったように思えます。 英文にある IE“sniffs”という記述がソレです。 Juriyさんは「そろそろ機能ごとに在る/無しを判断して対応をわけようよ」と述べている様子。 IE8 のように3種類のモードをもつブラウザも出てきましたし、バージョンによる違いも増えてきました。 これは説得力ある意見ですし、だから 1.6.1 に取り入れられたのでしょう。 英文が苦手な方でも、ここに紹介された isEventSupported 関数のコードを読めば、Juriyさんの言いたいことが理解できるのではないでしょうか。

関係ないですが、この isEventSupported関数のコード、僕は好きですね。 短いですが、JavaScriptっぽさに溢れているとおもいます。 関数を単に定義するのではなく、関数を返す無名関数を定義し実行することで実行環境(定義した TAGNAMES)を保持していたり。 TAGNAMES[eventName] || 'div' なんて演算子で場合分けをしてみたり。 JavaScript初心者は後にある isMouseEventSupported の定義を理解してから、このコードにとりかかれば味わい深いでしょう。

ただ個人的には、Firefox ではちょっとチェック処理が重い気がしています。 呼ぶたびに、一時的なElementを作成してしまいますからね。 自分ならば、よく使う機能に限って、この関数の結果をキャッシュしちゃうとおもいます。 もしくは事前にチェックしておいて、該当する処理関数を置き換えちゃいます。