XMLHttpRequestを利用した外部js動的ロード関数

げげげ。明日(8月1日)テスト!。こんなことしてる場合じゃないじゃん。まあいいやせっかく書いたし。

function load(script)
{
	var loaded = load.loaded;
	if(loaded[script]) return;

	var http = load.xmlhttp;
	var name = script.split('.')[0];

	http.open('GET', script, false);
	http.send('');

	eval(http.responseText);
	window[name] = eval(name);
	http.abort();
};

load.loaded = {};
load.xmlhttp = function()
{
	if(window.XMLHttpRequest)
		return new XMLHttpRequest;
	if(window.ActiveXObject)
	{
		var xmls = [
			'Microsoft.XMLHTTP',
			'Msxml2.XMLHTTP',
			'Msxml2.XMLHTTP.3.0',
			'Msxml2.XMLHTTP.4.0',
			'Msxml2.XMLHTTP.5.0'
		];

		for(var i=xmls.length-1;i>=0;i--)
		{
			try{
				return new ActiveXObject(xmls[i]);
			}
			catch(e){ /* empty */ }
		}
	}

	return null;
}();

っていうかこのコードを汎用的にエレガントにした奴がJSAN.jsになるよな…と思いつつ(http://jsan.jp/)。ファビコンのサイが可愛いなと♪