第73回 「Internet Explorerのバージョンを別の方法で判別する」


 前回はInternet Explorerのバージョンを抜き出すプログラムを作成しました。
 今回は前回のプログラムとは別の方法でバージョンを抜き出す方法を説明します。
 何かしたい場合に答えは1つではないので、いろいろな方法を考えてみると勉強になります。

 まず、Internet Explorer 6が返すuserAgentの文字列は以下のようになっています。

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)

 前回はMSIEから;に続く部分を抜き出しました。この文字列をよく見ると半角空白で区切られています。半角空白ごとに分割してバージョン部分だけ抜き出せば簡単です。半角空白で分割するにはsplit()を使います。分割された結果は配列として返されます。バージョン部分は4番目になるので配列の4番目を見ればよいことになります。数値として返したい場合にはeval()またはparseFloat()を使います。
 実際のプログラムは以下のようになります。


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


 次に前回少し書きましたが正規表現を使ってもバージョンを取得することができます。バージョン部分は以下の文字の組み合わせで構成されています。

数値.数値
数値.数値 数値

 これは4.0とか5.23といった具合になります。つまりuserAgentの文字列の中から、このパターンを抽出すればバージョンを取得できることになります。しかし、userAgentの文字列をよく見ると先頭部分にMozilla/4.0という文字があり、この4.0も上記パターンと同じです。そこでバージョン部分を示す数値の前に半角空白があるのを利用して「半角空白ではじまり数値.数値」または「半角空白ではじまり数値.数値 数値」の組み合わせをバージョン番号とします。
 正規表現では半角空白は\ で表現します。円記号の後に半角空白を入れます。数値は0〜9になるので[0-9]と表現します。.(ピリオド)は\.のように円記号の後に.(ピリオド)を書きます。数値が1個以上続く場合は+を付けます。
 正規表現でマッチした場合に結果は配列で返されます。一番最初の配列に入っている値がバージョンになりますのでeval()かparseFloat()を使って数値に変換します。
 実際のプログラムは以下のようになります。


<html>
<head>
<title></title>
<script language="JavaScript"><!--
// Internet Explorerのバージョンを返します
function getVersion()
{
var uName = navigator.userAgent;
str = uName.match(/\ [0-9]\.[0-9]+/);
return eval(str[0]);
}
// --></script>
</head>
<body>
<form>
<input type="button" value="チェック" onClick="alert(getVersion())">
</form>
</body>
</html>


 次回はMacOS XのブラウザSafariのバージョンを判別します。







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