第75回 「MacOS XのブラウザSafariのバージョンを判別(2)」


 今回はMacOS XのブラウザSafariのバージョンを判別するプログラムで1.0や1.1を返すプログラムを作成します。
 Safariが返すuserAgentの文字列をもう一度見てみましょう。

●MacOS X 10.2のもの
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.6

●MacOS X 10.3のもの
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/103u (KHTML, like Gecko) Safari/100.1

 前回は、この文字列の最後の部分を抜き出し表示しました。しかし、名目上のバージョンはv85.xが1.0、v100.xが1.1となっています。今回は、このような1.0、1.1のバージョンにして返すプログラムを作成します。
 一番簡単なものとしてはバージョンを抜き出して

100未満だったらバージョン1.0
86以上だったらバージョン1.1

 をif命令を使って判別することです。Safariの場合には、とにかく次のバージョンが出てみないと分からないというのが難点です。このif命令を使ったプログラムが以下のものになります。


<html>
<head>
<title></title>
<script language="JavaScript"><!--
// Safariのバージョンを返します
function getVersion()
{
ver = navigator.userAgent.split("/")[3];
n = eval(ver);
if (n < 100) return "1.0";
if (n > 86) return "1.1";
}
// --></script>
</head>
<body>
<form>
<input type="button" value="チェック" onClick="alert(getVersion())">
</form>
</body>
</html>


 このプログラムだとSafariのバージョンが上がるたびにif命令で、どの範囲が、どのバージョンなのかを調べなければなりません。そこで配列(連想配列/ハッシュ)を使ってバージョンをチェックする事にします。JavaScriptでは配列の添え字([ ]の中の数値、値)にキーワード/文字列を指定することができます。これを利用し、この部分にSafariのv85やv100の文字列を割り当てます。そこに名目上のバージョンを入れておくことで、バージョンが上がっても配列を増やすだけで済みます。
 実際のプログラムは以下のようになります。

<html>
<head>
<title></title>
<script language="JavaScript"><!--
// Safariのバージョンを返します
function getVersion()
{
ver = new Array();
ver["85"] = "1.0";
ver["100"] = "1.1";
str = navigator.userAgent.split("/")[3];
n = str.split(".")[0];
return ver[n];
}
// --></script>
</head>
<body>
<form>
<input type="button" value="チェック" onClick="alert(getVersion())">
</form>
</body>
</html>


 もし、既存のバージョンでない場合にはundefinedになります。サンプルでは文字列で返していますが、数値で返しても問題ありません。処理上やりやすいものにすれば良いでしょう。

 次回はNetscape Navigatorのバージョンを調べるプログラムについて説明します。







2002-2004 Copyright KaZuhiro FuRuhata (古籏一浩)