最近話題の Ajax を体験してみようと、簡単なプログラムを書いてみました。
主に以下のページを参考にしています。
PHPからのデータ送信には JSON-PHP を使用しました。
JavaScript をひさしぶりに触ってみると、あらためて面白い言語だなあと再認識しました。関数がファーストクラスオブジェクトだったり、インスタンスに直接メソッドを追加できるといった特徴は、Scheme や Ruby を通過することで、活かしどころがわかってくるような気がします。[翻訳]JavaScript: 世界で最も誤解されたプログラミング言語 に言われていることも、なるほどなあと思います。
今回はわざと随所に JavaScript らしい書き方をとりいれてみました。
しかし、ブラウザ間の非互換性には本当に辟易します。Ajax をやるにしても、肝心の XMLHttpRequest からして互換性がないんだから……。今回も、Mozilla Firefox 1.0.7 と Internet Explorer 6 でしか試していません。
実は今回非同期にサーバとやりとりしているのは、最初に元号・西暦対照テーブルを取得しているときだけで、あとは全部クライアントで処理が完結しています。そういう意味では Ajax とは言えないかも。
Yellow Fade Technique をとりいれてみました。
http://www.axentric.com/posts/default/7
の Fade Anything Technique のコードを参考にしつつ、
更新した箇所がフェード中に再び更新されたときに、
チカチカしないようにタイマをクリアするようにしています。
それから、
いやなブログ: JavaScript とクロージャ
http://namazu.org/~satoru/blog/archives/000040.html
を参考に、setTimeout にはクロージャを渡しています。
クロージャの環境に背景色の変数を閉じ込み、これをインクリメントすることで、だんだんと明るくなるようにしました。
prototype.js
http://prototype.conio.net/
を使うようにしました。
Function.bind() が便利です。引数に関数をとる高階関数にオブジェクトのメソッドを渡したいとき、そのメソッドのなかで this が無効になってしまうのを防いでくれます。これのおかげで、グローバルな関数定義が減りました。
そのほか、Ajax.Request() や $() (document.getElementById() の別名) も便利ですが、クラスベースOOPのほうは特に必要性を感じてないので、利用していません。
Posted by: noir123 on 2005年10月05日 21:44サイン・インを確認しました、 さん。コメントしてください。 (サイン・アウト)
(いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)