Index |
HOME > プログラムTOP > JavaScript |
||||||||||||||||||||||||||||||||||||
ブラウザの識別
JavaScript の実用的なTips集です。ここでは、実装済みの navigator オブジェクトを使って、 OS やブラウザの種類、バージョンを取得する方法を扱います。
sasaraan programming ![]() Exposition ■navigatorオブジェクト
ブラウザのアプリケーションの情報は、navigatorオブジェクトと以下の各プロパティを使って取得できます。navigatorオブジェクトは、Webブラウザの情報を扱うオブジェクトです。これには、以下のようなプロパティがあります。
// ソースコード
document.write("・platform : ", navigator.platform, "<br>");
document.write("・appName : ", navigator.appName, "<br>");
document.write("・appVersion : ", navigator.appVersion);
[ 出力例 ]
・platform : Win32
・appName : Microsoft Internet Explorer
・appVersion : 4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR ... (省略)
"platform"は、Windowsなら、"Win32","WinCE"のように"Win"を含んだ文字列を、Macなら、 "Mac68K","MacPPC"などの"Mac"を含んだ文字列、また、UNIXなら、"HP-UX HP"といった値を返します。"appName"は、IEなら"Internet Explorer"、NNなら、"Netscape"を含んだ文字列を返してきます。
ただし、これらの値はまれに正確でないことがあるようです。正確な値が必要な時は、userAgentプロパティを使った方が安全です。これはブラウザ固有の情報を記した文字列で、種類やバージョン、OSごとに異なります。しかし、この設定を偽装できるブラウザもありますので、結局、完全に正確な情報を得ることは難しいようです。 * userAgentの例
・Windows & IE 4.0 : "Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)" ■OSの識別
OSの種類をuserAgent文字列を使って取得する例です。
// ソースコード
var ua = navigator.userAgent;
var strOS;
if (ua.indexOf("Win") >= 0) strOS = "Win";
else if (ua.indexOf("Mac") >= 0) strOS = "Mac";
else if (ua.indexOf("Linux") >= 0) strOS = "Linux";
else strOS = "";
1. "Win" : Windows の場合に含まれる文字列
2. "Mac" : Macintosh の場合に含まれる文字列 3. "Linux" : Linux の場合に含まれる文字列 4. 上記のいずれにも該当しない時は、空の文字列 "" ■ブラウザの種類の識別
ブラウザの種類をuserAgent文字列を使って取得する例です。
// ソースコード
var ua = navigator.userAgent;
var strBrowser;
if (ua.indexOf("MSIE") >= 0) strBrowser = "IE";
else if (ua.indexOf("Netscape") >= 0) strBrowser = "NN";
else if (ua.indexOf("Safari") >= 0) strBrowser = "Safari";
else if (ua.indexOf("Opera") >= 0) strBrowser = "Opera";
else if (ua.indexOf("Firefox") >= 0) strBrowser = "Firefox";
else if (ua.indexOf("Gecko") >= 0) strBrowser = "Mozilla";
else if (ua.indexOf("Mozilla/4") >= 0) strBrowser = "NN";
else strBrowser = "";
userAgentに含まれるキーワードによって各ブラウザを識別して、変数 srBrowser に代入しています。
1. "MSIE" : Internet Explorer だけに含まれる ■ブラウザのバージョンの識別// ソースコード
var ua = navigator.userAgent;
var strBrowser;
var nVersion;
var nHit; // 合致した部分の先頭の文字の添え字
if ((nHit = ua.indexOf("MSIE")) >= 0) {
strBrowser = "IE";
nVersion = ua.substr(nHit+5, 3);
} else if ((nHit = ua.indexOf("Netscape")) >= 0) {
strBrowser = "NN";
if (ua.charAt(nHit+8) == "6" ) nVersion = ua.substr(nHit+10, 3);
else nVersion = ua.substr(nHit+ 9, 3);
} else if ((nHit = ua.indexOf("Safari")) >= 0) {
strBrowser = "Safari";
nVersion = ua.substr(nHit+7);
} else if ((nHit = ua.indexOf("Opera")) >= 0) {
strBrowser = "Opera";
nVersion = ua.substr(nHit+6, 3);
} else if ((nHit = ua.indexOf("Firefox")) >= 0) {
strBrowser = "Firefox";
nVersion = ua.substr(nHit+8, 3);
} else if (ua.indexOf("Gecko") >= 0) {
nHit = ua.indexOf("rv:");
strBrowser = "Mozilla";
nVersion = ua.substr(nHit+3, 3);
} else if (ua.indexOf("Mozilla/4") >= 0) {
strBrowser = "NN";
nVersion = 4;
} else {
strBrowser = "";
nVersion = 0;
}
* バージョン番号の取り出しは、以下のようにしています。
1. IE : "MSIE"の先頭から 5文字目以降がバージョン番号 2-1. NN6 : "Netscape"の先頭から10文字目以降がバージョン番号 2-2. NN7 : "Netscape"の先頭から 9文字目以降がバージョン番号 3. Safari : "Safari"の先頭から 7文字目以降がバージョン番号 4. Opera : "Opera"の先頭から 6文字目以降がバージョン番号 5. Firefox : "Firefox"の先頭から 8文字目以降がバージョン番号 6. Mozilla : "rv:"の先頭から 3文字目以降がバージョン番号 7. NN4 : 4 に固定 8. 上記のいずれにも該当しない時は 0 ■バージョンチェック
便利なことに、オブジェクトのメンバを使って対応するブラウザのバージョンを特定することができます。これは、条件文に書式を入れると、真偽値 (true | false) を返すためです。実際には、定義が存在すれば、まず、その内容を示す文字列に変換され、なければ undefined (未定義を表す値)に変換されます。条件文の文字列は、文字数が 0 以上なら true を返し、また、undefined は 常に false を返しますので、結局、真偽値のいずれかを取得できることになるわけです。
◆var s = document.getElementById; 以下は、バージョンチェックに使われる代表的なメソッドを活用する例です。
●if (document.getElementById) ... |
|||||||||||||||||||||||||||||||||||||
www.sasaraan.net |
(c) morijoh |
||||||||||||||||||||||||||||||||||||