IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

Prototype.js 1.5.0_rc0

最新が 1.5.0_pre1 から 1.5.0_rc0 になってたので調査。今回はあまり、面白い変更が見当たらない。Fix ばかりだ。

Prototype.js 1.5.0_pre1 からの変更点

CHANGELOG を見ながらソースを読んでまとめました。

  • 可能な場合は、Element.extend を使わずに直接 HTMLElement.prototype を拡張。
  • Mozilla の bfcache を有効にするために、window.unload でイベントリスナを開放するのを IE のみとした。
  • Array.prototype.shift の定義を削除(再実装になるため)。
  • Array.prototype.reverse の再定義を防ぐ。
  • Enumerable.min および Enumerable.max の 0 を認識しないバグを修正。
  • IE7 では XMLHttpRequest に対応するので、オブジェクト取得の試行順を ActiveXObject → XMLHttpRequest から XMLHttpRequest → ActiveXObject とした。
  • 配列に null や undefined が入ってる場合 Array.prototype.flatten が動かないのを修正。
  • String.prototype.evalScripts で var があった場合スコープ内で変数名が競合する可能性があるため、function をかぶせて、eval 用のスコープを作成するようにする。
  • for in ループのプロパティ名を保持する変数に var を付けて局所化した。
  • IE の tr 要素に対する Insertion.Before および Insertion.After に対応。
  • Ajax.Request の contentType を application/x-www-form-urlencoded から options を用いてオーバライドできるようになった。
  • Firefox との相性のために X-JSON の値を eval する前にカッコで囲むようにした。
  • IE で正常に動くため、Form.serialize での option 要素の値の取り方を変えた。
  • Element.extend.cache を IEメモリリーク対策のために追加。

Ajax

Ajax.Request, Ajax.Updater, Ajax.PeriodicalUpdater のコンストラクタの options で contentType を指定できるようになった。
これで XML-RPC とか便利。

Ajax.Request の例
new Ajax.Request(
    '/',
    {
        contentType: 'text/xml',
        postBody: '<hoge>hoge</hoge>',
        onSuccess : function(req, json){}
    }
);
Ajax.Updater の例
new Ajax.Updater(
    { 'id_success', 'id_failure' },
    '/',
    {
        contentType: 'text/xml',
        postBody: '<hoge>hoge</hoge>'
    }
);
Ajax.PeriodicalUpdater の例
new Ajax.PeriodicalUpdater(
    { 'id_success', 'id_failure' },
    '/',
    {
        contentType: 'text/xml',
        postBody: '<hoge>hoge</hoge>'
    }
);