AJAXのcreateXMLHttpRequest関数を使ってサーバ・クライアント間を通信した際、IEとFireFoxで違った挙動をした件があったのでメモ。
開発をFirefoxメインでやっていたので気が付かなかったんですが、下記関数のcbFuncを指定しないとIEでエラーになりました。
確認したところ、Firefox、Opera、Safari、Google Chrome(全て最新)では引数のcbFuncが無くても動作します。
記述ミスでも動くのはいいんですが、やっぱりしっかり書かないとダメですよね、こういうの・・・
★createXMLHttpRequest関数
function createXMLHttpRequest(cbFunc){
var XMLhttpObject = null;
try{
//Firefox, Opera, Safari
XMLhttpObject = new XMLHttpRequest();
}catch(e){
try{
//IE6~?
XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
//IEその他
XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
return null;
}
}
}
if(XMLhttpObject){
XMLhttpObject.onreadystatechange = cbFunc;
}
return XMLhttpObject;
}
★動作させたスクリプト
NG -> createXMLHttpRequest();
OK -> createXMLHttpRequest(function(){})
※空の関数か、コールバックする関数を入れないとダメとうわけですね。