UAIdentifier - JavaScript によるユーザエージェント判別

© 2006-2020 Magicant / 1.18 (2020-08-01)

JavaScript を実行しているブラウザの種類およびそのレンダリングエンジン・ オペレーティングシステムの種類を判別します。 テストページで実際に試すことができます。

uai.js は自由に使用していただいて構いません。

uai.js の使い方

実装ファイルは uai.js です。 このファイルは単独では実行しても意味がありません。 uai.js には UA­Identifier オブジェクトの定義が含まれており、これを他の JavaScript コードから呼び出して使います。

UA­Identifier オブジェクトの使用例を以下に挙げます。

var uai = new UAIdentifier();
if (uai.ie >= 5.0)
    write("Internet Explorer 5.0 or later");
if (uai.firefox)
    write("Mozilla Firefox");
if (uai.opera)
    write("Opera");
alert(uai.toString());

詳細は API 仕様判定結果の使い方をご覧下さい。

uai.js の API 仕様

UA­Identifier コンストラクタ

new UAIdentifier()

UA­Identifier オブジェクトを初期化します。

引数はありません。コンストラクタ内でユーザエージェント判定コードが実行され、判定結果の値を含む オブジェクトが作成されます。

このコンストラクタを単なるメソッドとして呼び出した場合の動作は保証されません。

to­String メソッド

string toString()

判定結果を表す文字列を返します。

返される文字列には、次に示す文字のみが含まれます。

文字列の大まかな書式は、該当する判定結果の名前をカンマで区切ってつなげたものです。 バージョン番号等も分かっている場合は、名前に続いてコロンとその番号が続きます。

このメソッドが返す文字列の例:

WinNT の値が存在する場合、Win の値は文字列に含まれません。

Mozilla Revision のバージョンは Mozilla のバージョンに続いて出力されます。 (上の二つ目の例を参照)

各プロパティ

ie, edge, mozilla, mozillarv, firefox, netscape, opera, vivaldi, safari, chrome, konqueror, epiphany, unknown, trident, tasman, edgehtml, gecko, presto, applewebkit, win, winnt, mac, linux, bsd : string/boolean/undefined

これらのプロパティの値は判別結果を表します。詳細は判定結果の使い方を参照。

判別機能の詳細

UA­Identifier コンストラクタは、HTML 文書を表示するブラウザ上で実行されることで、 そのブラウザ (ユーザエージェント) を判別します。 判別は主に navigator オブジェクトの userAgent プロパティ文字列を元に行います。 グローバルオブジェクトに navigator プロパティが存在しない場合、判定は行われません。

また、より確実に判別を行うために、グローバルオブジェクトの以下の名前のプロパティについても調べます。

これらのプロパティが他のスクリプトなどにより上書きされている場合、正しく判別できない可能性があります。

ユーザエージェントが Internet Explorer である場合、判別に JScript の条件コンパイル機能を使用します。 UA­Identifier スクリプト内で @cc_on ステートメントが実行されるため、 他のスクリプトで条件コンパイルを使用している場合はその動作に影響を与える可能性があります。

UA­Identifier が判別できる内容は以下の通りです。

ブラウザの種類
レンダリングエンジンの種類
オペレーティングシステムの種類

注意: このスクリプトによる判定結果は、必ずしも正しいとは限りません。 レンダリングエンジンの判別はほぼ確実ですが、ブラウザおよびオペレーティングシステムの判別は ブラウザの種類や設定によっては誤った判定結果を出す可能性があります。 判定結果は参考情報としてお使い下さい。

判定結果の使い方

判定結果は、UA­Identifier オブジェクトのプロパティとして表されます。 各プロパティはそれぞれ一つのブラウザ、レンダリングエンジン、またはオペレーティングシステムに 対応しています。 プロパティの値の型・形式は判定要素によって異なります。

判定の結果に該当するプロパティに結果の値が設定されます。 該当しないその他のプロパティは未定義 (undefined) のままです。

プロパティ名・判定結果値一覧
プロパティ名 判定対象 値の書式
ieInternet Explorerタイプ A
edgeMicrosoft Edgeタイプ B
mozillaMozillaタイプ A
mozillarvMozilla Revisionタイプ B
firefoxFirefoxタイプ B
netscapeNetscapeタイプ B
operaOperaタイプ B
vivaldiVivaldiタイプ B
safariSafariタイプ B
chromeChromeタイプ B
konquerorKonquerorタイプ B
epiphanyEpiphanyタイプ B
unknownUser agent 不明タイプ E
tridentTridentタイプ A
edgehtmlEdgeHTMLタイプ A
tasmanTasmanタイプ A
geckoGeckoタイプ C
prestoPrestoタイプ B
applewebkitAppleWebKitタイプ B
winWindowsタイプ D
winntWindows NTタイプ A
macMac OSタイプ E
linuxLinuxタイプ E
bsdBSDタイプ D
sunosSolarisタイプ E

プロパティ値の書式の種類:

タイプ A
"1.2" や "34.56" のように小数に変換できる文字列、または true
タイプ B
"1.2" や "3.4.56" のようにアラビア数字とピリオドで構成される文字列、または true
タイプ C
"20050123" のように年月日を 8 文字で表す文字列、または true
タイプ D
文字列、または true。文字列の書式は不定。
タイプ E
true

補足