Yahoo! UI Library でお勉強 その参

Ajaxの主役オブジェクトのXMLHttpRequestを生成するときに、どうしてもブラウザ実装の違いを吸収する必要がある。
Yahoo! UI Libraryのconnection.jsの手法はなるほどという感じ。
createXhrObjectというfunction内の話ですが、まずXMLHttpRequestをnewしてみる。

http = new XMLHttpRequest();

失敗してcatchブロックに入ると、ActiveXObjectをnewして頑張ろうとする。

http = new ActiveXObject(this._msxml_progid[i]);
obj = { conn:http, tId:transactionId };

で_msxml_progidという配列分ループ(失敗したらcatchに入るのでobj変数は上書きされない)してfinallyブロックにて

return obj;

となる。
_msxml_progidは

_msxml_progid:[
‘MSXML2.XMLHTTP.5.0’,
‘MSXML2.XMLHTTP.4.0’,
‘MSXML2.XMLHTTP.3.0’,
‘MSXML2.XMLHTTP’,
Microsoft.XMLHTTP’
]

とありったけ定義されていると。
そのまんまなコーディングだけど、何か巧いなと思ってしまう。if-elseだらけになったりtry-catchだらけになったりせず、明瞭なコードで気持ちが良い。

コメントする

メールアドレスが公開されることはありません。