Internet Explorer 8 における XMLHttpRequest の強化
Internet Explorer 8 では、非同期 JavaScript および XML (AJAX) 要求をより細かく制御できます。 具体的に、開発者は XMLHttpRequest オブジェクトのタイムアウトを指定できるようになりました。このオブジェクトは、Internet Explorer 8 で可能になった多くの同時接続と組み合わせて、AJAX アプリケーションで遅延が発生しないようにできるものです。 また、タイムアウトのイベント ハンドラーも追加されました。
このトピックは、次の各セクションで構成されています。
- XMLHttpRequest オブジェクト
- timeout プロパティ
- ontimeout イベント ハンドラー
- 関連トピック
XMLHttpRequest オブジェクト
XMLHttpRequest オブジェクトはデータ転送オブジェクトで、AJAX の中心です。 XMLHttpRequest は 2000 年に導入され、主に Microsoft Outlook Web Access が通知なしで電子メールを表示できるようにするものでした。 それ以降、AJAX アプリケーションは、サーバーとのデータ交換を非同期で行い、データが表示される Web ページを再読み込みする必要なくデータを表示する機能によって一般的になりました。
AJAX が一般的になると、XMLHttpRequest の採用は当初の予想を大きく上回りました。 同時に、その機能の設計は変わらないままでした。 XMLHttpRequest を近代化し、現代の AJAX に集中したアプリケーションの信頼性を向上させるため、Internet Explorer 8 は XMLHttpRequest に新しい機能を導入しました。
timeout プロパティ
XMLHttpRequest は Internet Explorer 7 のネイティブ オブジェクトになり、Internet Explorer 8 では timeout プロパティを持つようになりました。 timeout プロパティを使用すると、Web 開発者は、接続がタイムアウトするまでにホストに待機させる時間をミリ秒単位で指定できます。
これにはいくつかの利点があります。 ホスト プロセスとサーバー間に同時に存在できる接続数には制限があるため、タイムアウトを設定することによって、ホスト プロセスは無効になった接続を待つのではなく、新しい要求をすぐに開くことができます。 特にこの利点は、たとえばダイヤルアップ モデム ユーザーなどナローバンド シナリオのユーザーに関係があり、パフォーマンスの向上と遅延の減少が期待できます。 接続および Internet Explorer 8 の詳細については、「Internet Explorer 8 における接続性強化」を参照してください。
timeout プロパティの使用方法を示す簡単なサンプル コードは以下のとおりです。 この場合、timeout は 10,000 ミリ秒 (10 秒) に設定されています。
var xhr; xhr = new XMLHttpRequest(); xhr.open("GET", "http://myurl.php", true); xhr.timeout = 10000;
ontimeout イベント ハンドラー
タイムアウトのイベント発生時の対応をアプリケーションに指示するには、ontimeout イベント ハンドラーを使用します。
ontimeout イベント ハンドラーの使用方法を示す簡単なサンプル コードは以下のとおりです。 この場合、ontimeout ハンドラーが立ち上がると、timeoutRaised
メソッドが呼び出されます。
function timeoutRaised() { alert("timeout"); } ... xmlHttpRequest.ontimeout = timeoutRaised;