最新が 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>' } );