■「はじめに」より抜粋
無限の可能性を秘めたAjaxという畑に、「新しいWebアプリケーション」という花を咲かせる「アイデアの種」を蒔くこと
――それが本書の仕事です。
「Webページでも、ふつうのアプリケーションのような操作性を実現できたら便利になるのになぁ」
と感じたこと、ありませんか? Webマスター、Webデザイナー、開発者など、Webページ作成に関わる人であれば、誰でも一度は感じたことがある疑問。
そう、われわれは、ブラウザの機能という制約に、知らず知らずのうちに縛られていたのです。
しかし近年、メジャーなブラウザーも進化を遂げ、さまざまな機能が実装されるようになりました。使い勝手の部分だけにとどまらず、開発者向けには、JavaScriptエンジンの強化が図られてきました。
そして、これまであまり使われてこなかった機能が、俄然注目を集めるようになりました。こうした機能の一つにXMLHttpRequestがあります。XMLHttpRequestを使えば、「JavaScriptから非同期にHTTP通信を行ない、WWWサーバと連携することで、ページ遷移をすることなく、部分的にダイナミックに表示を変化させ、ふつうのアプリケーションのような操作性を実現することができる」のです。
本書では、Ajaxの核となるXMLHttpRequestオブジェクトをはじめ、それに付随する DOM (Document Object Model) 、イベントハンドリングの解説から、実践的な Ajax Web アプリケーション作成までを網羅した Ajax 解説書の決定版です。本書は、Webアプリケーション開発技術者のみならず、Webデザイナー、ネットビジネスをプロデュースしているマネージャー、Webマスターを対象としています。JavaScriptやCSSの基礎をある程度学んだことがあれば、応用が効く数多くのサンプルを通して、ステップ倍ステップで、無理なく Ajax が理解できるように構成されています。
Imagination is more important than knowledge. Knowledge is limited. Imagination encircles the world.
- Albert Einstein
想像力は知識よりも大切だ。知識には限界がある。想像力は世界を包み込むのだ。
- アルバート・アインシュタイン
こうして蒔かれた種が、あなたの想像力によって芽吹き、一つでも多くの、そして画期的なWebアプリケーションが誕生してくれることを願って。
■改訂履歴
▼5.3.2 画像を拡大・縮小表示する(P226, P231) - 2006/06/29公開
[改訂前]
if(e.clientX && e.clientY) {
mouse_x = e.clientX;
mouse_y = e.clientY;
} else {
mouse_x = outframe_pos.x + Math.round( outframe.offsetWidth / 2 );
mouse_y = outframe_pos.y + Math.round( outframe.offsetHeight / 2 );
}
[改訂後]
if(e.wheelDalta && e.clientX && e.clientY) {
mouse_x = e.clientX;
mouse_y = e.clientY;
} else {
mouse_x = outframe_pos.x + Math.round( outframe.offsetWidth / 2 );
mouse_y = outframe_pos.y + Math.round( outframe.offsetHeight / 2 );
}
[説明]
本書発売時点(2005年12月)では、マウスホイールイベントから取得できるclientX, clientYプロパティーは、FireFox1.5の場合、0がセットされておりました。そのため、改訂前のスクリプトでも問題なく動作しておりましたが、2006年6月現在のFireFox1.5の最新版では、これらプロパティーに値がセットされるようになりました。しかし、実際のマウスポインターの座標ではない値がセットされてしまい、本サンプルが正常に動作しなくなりました。そのため、マウスポインターの座標を取得するコードに修正を加えました。
clientX, clientYプロパティーに0ではない値がセットされている場合にこれらプロパティー値をマウスポインターの座標として適用しておりましたが、これだけでは、FireFox1.5の最新版においても、clientX, clientYプロパティーの間違った値が適用されてしまいます。そのため、これらプロパティー値を適用する条件に、e.wheelDaltaが存在することを加えることで、FireFox1.5の最新版がこれらプロパティー値を適用することを回避しております。