第72回 「Internet Explorerのバージョンを判別する」
今回はInternet Explorerのバージョン判別する方法について説明します。
前々回に掲載したInternet Explorerが返すappName, appVersion, userAgentは以下の文字列を返します。
●Windows XP + Internet Explorer 6
navigator.appName : Microsoft Internet Explorer
navigator.appVersion : 4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
navigator.userAgent : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
●MacOS X + Internet Explorer 5.22
navigator.appName : Microsoft Internet Explorer
navigator.appVersion : 4.0 (compatible; MSIE 5.0; Macintosh; I; PPC)
navigator.userAgent : Mozilla/4.0 (compatible; MSIE 5.22; Mac_PowerPC)
appVersionまたはuserAgentにバージョンが含まれていますが、appVersionではMacの場合には正確なバージョンを取得することができません。バージョンを取得するにはuserAgentに含まれる文字列からバージョン部分を抜き出すことになります。
他のInternet Explorerのバージョンが返すuserAgentも見てみます。
●Internet Explorer 4
Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)
Mozilla/4.0 (compatible; MSIE 4.5; Mac_PowerPC)
●Internet Explorer 5
Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)
Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)
これらを見ると、いずれもMSIEの文字列の後にバージョン番号がありバージョン番号の後には;(セミコロン)がありますので、この範囲を抜き出せば良いことになります。
indexOf()、lastIndexOf()、RegExpなどを使って一致文字列を調べてからsubstring、substr、RegExpでバージョン部分を文字列を抜き出します。indexOf()は文字列の前方から一致文字を調べ一致した位置を返します。また、indexOf()は文字列のどこから検索するかを指定できます。これを利用して、まずMSIEの文字を検索します。一致文字列があったら、そこを検索の開始位置として;(セミコロン)を検索します。この範囲をsubstringで抜き出します。
他にも方法はありますが、indexOf()はRegExp(正規表現)と異なり、JavaScriptをサポートしているどのブラウザでも動作するため、最も安全に使うことができます。
実際のプログラムは以下のようになります。
<html>
<head>
<title></title>
<script language="JavaScript"><!--
// Internet Explorerのバージョンを返します
function getVersion()
{
var uName = navigator.userAgent;
sPtr = uName.indexOf("MSIE");
ePtr = uName.indexOf(";",sPtr);
ver = uName.substring(sPtr+5,ePtr);
return eval(ver);
}
// --></script>
</head>
<body>
<form>
<input type="button" value="チェック" onClick="alert(getVersion())">
</form>
</body>
</html>
これ以外の方法でもInternet Explorerのバージョンを抜き出すことができます。
次回は上記以外の別の方法を使ったプログラムについて説明します。