SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【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の環境によっては、次の記述でもよい。

おそらく一番無難なのが 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()

関連するメモ

コメント