XMLHttpRequestオブジェクトのインスタンス化
AJAXで利用するXMLHTTPRequestオブジェクトはFirefoxなどではネイティブにサポートされていますが、マイクロソフトのIEではActiveXコントロールを通じて実装されています。Javascriptではブラウザに応じてXMLHttpRequestオブジェクトをインスタンス化する必要があります。
ブラウザの種類に応じてインスタンス化するコードは以下になります。
- Firefoxなど
xmlobj=new XMLHttpRequest(); - Internet Explorer
xmlobj=new ActiveXObject('Microsoft.XMLHTTP');
ブラウザのタイプをwindow.ActiveXObjectでチェックして、インスタンス化を切り替えることもできますが例外を扱うtry-catchブロックを利用する方が一般的なようです。具体的には以下のコードになります。
try{
// Firefox, Netscapeなどでのインスタンス化
xmlobj=new XMLHttpRequest();
}
catch(e){
try{
// MS-IEではActiveXObjectとして生成
xmlobj=new ActiveXObject('Microsoft.XMLHTTP');
}
catch(e){
// Ajaxはサポートされない
xmlobj=null;
return false;
}
}
tryブロックの処理が失敗すると例外処理であるcatchブロックに移ります。ここでは、さらにtry-catchをネストさせて処理しています。