強火で進め

このブログではプログラム関連の記事を中心に書いてます。

iOS 4.2のSafariで各種Array型がサポートされているのを確認

前のこちらエントリーでも紹介したこちらのサイトの「New JavaScript Data-types」の項目にWebGL由来の各種Array型がサポートされたとの情報が有りました。こちらを検証する為にプログラムを書きました。

主な処理はこちら。インスタンスの生成に失敗したら定義されていないという判断です。

function chreckResult(v) {
	var res = '';
	if (v) {
		res += ' -> <span id="successded">defined</span><br>';
	} else {
		res += ' -> <span id="failed">undefined</span><br>';
	}
	return res;
}

function test() {
	var resMsg = '';
	
	var int8;
	try {
		resMsg += 'Int8Array ';
		int8 = new Int8Array(3);
	} catch(e) {
	}
	resMsg += chreckResult(int8);
	
	var uint8;
	try {
		resMsg += 'Uint8Array ';
		uint8 = new Uint8Array(3);
	} catch(e) {
	}
	resMsg += chreckResult(uint8);

	var int16;
	try {
		resMsg += 'Int16Array ';
		int16 = new Int16Array(3);
	} catch(e) {
	}
	resMsg += chreckResult(int16);

	var uint16;
	try {
		resMsg += 'Uint16Array ';
		uint16 = new Uint16Array(3);
	} catch(e) {
	}
	resMsg += chreckResult(uint16);

	var int32;
	try {
		resMsg += 'Int32Array ';
		uint8 = new Int32Array(3);
	} catch(e) {
	}
	resMsg += chreckResult(int32);

	var uint32;
	try {
		resMsg += 'Uint32Array ';
		uint32 = new Uint32Array(3);
	} catch(e) {
	}
	resMsg += chreckResult(uint32);

	var float32;
	try {
		resMsg += 'Float32Array ';
		float32 = new Float32Array(3);
	} catch(e) {
	}
	resMsg += chreckResult(float32);

	var float64;
	try {
		resMsg += 'Float64Array ';
		float64 = new Float64Array(3);
	} catch(e) {
	}
	resMsg += chreckResult(float64);

	document.getElementById("result").innerHTML = resMsg;
}
window.addEventListener('load', test, false);

実際に試したい場合はiOS 4.2のiPhoneこちらにアクセスして下さい。

結果はこちら。

Int32Array と Float64Array 以外、全てのArray型がサポートされるているのが確認できます。

ちなみにWebGLに対応したChromeWebKitでアクセスしても同様の結果になりました。今のところ Int32Array と Float64Array は実装しないのが主流の様です。