【Javascript】クロスブラウザ new XMLHttpRequest()(jQueryと一緒でも)
いつでもどこでも、new XMLHttpRequest () と書きたい!
これでどうでしょう
//ないなら作っておく! if (!window.XMLHttpRequest) { window.XMLHttpRequest = function() { try { return new ActiveXObject("Microsoft.XMLHTTP") } catch (ex) { return null } } }
これをjavascriptの最初の方に書いておくだけ。
この後は何も気にしないで「new XMLHttpRequest()
」ができる。
「new ActiveXObject("Microsoft.XMLHTTP")
」は、クライアントPCの環境によっては、次の記述でもよい。
ActiveXObject("Msxml2.XMLHTTP.5.0")
ActiveXObject("Msxml2.XMLHTTP.4.0")
ActiveXObject("Msxml2.XMLHTTP.3.0")
ActiveXObject("Msxml2.XMLHTTP")
おそらく一番無難なのが new ActiveXObject("Microsoft.XMLHTTP")
なのでしょう。jQueryの内部でもそうしている。ActiveXObjectを使わざるを得ないのはほぼIE6のときのみ。あまりこだわらないことにします。
window.XMLHttpRequest がないブラウザに window.XMLHttpRequest を作ってしまって大丈夫なのか?というところが気になりますが、jQueryと共存する場合は大丈夫そうです。jQuery側では ActiveXObject があるかどうかを見ている箇所がありましたが、XMLHttpRequest があるかどうかで何か判断しているところはなさそうです。
jQueryを使っている環境なら、これでもOK。
//jQueryから拝借 if (!window.XMLHttpRequest) { window.XMLHttpRequest = function() { return jQuery.ajaxSettings.xhr() } }
jQueryに依存するつもりなら、こう書いたってOK。
//XMLHttpRequest が返ってくる $.ajaxSettings.xhr()
コメント