第77回 「OSを判別する」
今回はOS (Operating System) を判別するプログラムを作成します。
それぞれのOSとブラウザが返すuserAgentの文字列をもう一度見てみましょう。
●Windows XP
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.0.2) Gecko/20030208 Netscape/7.02
Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.01 [en]
●Macintosh (MacOS X)
Mozilla/4.0 (compatible; MSIE 5.22; Mac_PowerPC)
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-JP; rv:1.0.1) Gecko/20020823 Netscape/7.0
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/103u (KHTML, like Gecko) Safari/100
●UNIX (X-WINDOW)
Mozilla/5.0 (X11; U; Linux i686; ja-JP; rv:1.1) Gecko/20021105
Mozilla/4.7 [en] (X11; I; SunOS 5.8 sun4u)
Mozilla/5.0 (compatible; Konqueror/3.1; Linux 2.4.21-0.13mdk; X11; i586; en_DK, en)
Windowsの場合はWindowsという文字が含まれています。この文字列があるかどうかでWindowsを判別できます。
Macintoshの場合はMacという3文字だけは共通のようです。この3文字でMacintoshかどうか判別できます。
UNIX (FreeBSD, Linux, SunOSなど。UNIX互換OS)の場合はX11という文字(X-WINDOW)が入っていますから、これで判別することができます。
実際のプログラムは以下のようになります。特定の文字列があるかどうかだけなのでindexOf()を使って調べるだけで済みます。
<html>
<head>
<title></title>
<script language="JavaScript"><!--
// OS名を返します
function getOS()
{
var uName = navigator.userAgent;
var osName = "unknown";
if (uName.indexOf("Windows") > -1) osName = "Windows";
if (uName.indexOf("Mac") > -1) osName = "Macintosh";
if (uName.indexOf("X11") > -1) osName = "UNIX";
return osName;
}
// --></script>
</head>
<body>
<form>
<input type="button" value="チェック" onClick="alert(getOS())">
</form>
</body>
</html>
次回はフレームについて説明します。