JavaScript入門 | ブラウザオブジェクトモデル | Navigatorオブジェクト

navigatorオブジェクトは、ブラウザの提供元やバージョン情報など、ブラウザに関するさまざまな情報を保存するオブジェクトである。 このオブジェクトの名前は、Netscapeの初期WebブラウザであったNavigatorに由来する。

ブラウザスニッフィング

以前は、訪問者のWebブラウザの種類を事前に把握して対応することで、ブラウザ間の互換性を維持していた。 このように互換性を維持する方法をブラウザスニッフィングという。

navigatorオブジェクトは、このブラウザスニッフィングで使用できるさまざまな標準プロパティおよび非標準プロパティを提供する。 しかし現在は、この方法よりも、必要なプロパティだけを簡単にテストする機能テストの方法がより多く使われている。

現在のブラウザ名

navigatorオブジェクトのappNameappCodeNameプロパティは、現在使用しているブラウザの完全な名前を返す。 ただし、ブラウザ間の互換性のため、ほとんどのブラウザはスニッフィングコード上でブラウザ名として"Netscape"を使用する。 また、ほとんどのブラウザはブラウザのコード名として"Mozilla"を使用する。

document.write("現在使用中のブラウザ名は " + navigator.appName + " です。<br>");
document.write("また、そのブラウザのコード名は " + navigator.appCodeName + " です。");

Internet Explorer 11、Chrome、Firefox、Safariはいずれもブラウザ名として"Netscape"を使用する。 Internet Explorer 10以前、Chrome、Firefox、Safari、Operaはいずれもブラウザコード名として"Mozilla"を使用する。

このプロパティはWeb標準から除外されているため、できるだけ使用しない方がよい。

現在のブラウザのバージョン

navigatorオブジェクトのappVersionuserAgentプロパティは、現在使用しているブラウザのバージョン情報を文字列として返す。

これらのプロパティの結果として返される文字列に、別途定められた標準形式はない。 したがって、ブラウザごとに少しずつ異なる形式の文字列を返す。 また、userAgentプロパティの戻り値には、appVersionプロパティの情報だけでなく、追加の詳細情報も含まれる。

document.write("現在使用中のブラウザのバージョン情報は " + navigator.appVersion + " です。<br><br>");
document.write("userAgentプロパティで分かる追加情報は " + navigator.userAgent + " です。");

このプロパティはWeb標準から除外されているため、できるだけ使用しない方がよい。

現在のブラウザが実行されているOS

navigatorオブジェクトのplatformプロパティは、現在のブラウザが実行されているOSを識別する文字列を返す。

document.write("現在のブラウザが実行されているOSは " + navigator.platform + " です。");

現在のブラウザの既定言語設定

navigatorオブジェクトのlanguageプロパティは、現在使用中のブラウザの既定言語設定を返す。

document.write("現在のブラウザの既定言語設定は " + navigator.language + " です。");

Javaアプレットの実行可否

navigatorオブジェクトのjavaEnabled()メソッドは、現在使用中のブラウザがJavaアプレットを実行できるかを検査する非標準メソッドである。

document.write("現在のブラウザはJavaアプレットを ");
if (navigator.javaEnabled()) {
    document.write("実行できます。");
} else {
    document.write("実行できません。");
}

Cookieの使用可否

navigatorオブジェクトのcookieEnabledプロパティは、現在使用中のブラウザがCookieを使用できるかを検査する非標準プロパティである。

document.write("現在のブラウザはCookieを ");
if (navigator.cookieEnabled) {
    document.write("使用できます。");
} else {
    document.write("使用できません。");
}