User agent sniffing
Navigator.userAgent は読み取り専用のプロパティで、現在のブラウザーのユーザーエージェント文字列を返します。
ユーザーエージェント文字列の検出に基づくブラウザーの識別は信頼できず、ユーザーエージェント文字列はユーザーが設定可能なので推奨されません。例えば、以下のようになります。
Firefox では、 about:config の general.useragent.override 設定を使って変更することができます。一部の Firefox 拡張機能でも設定可能です。しかし、これは取得する HTTP ヘッダーと navigator.userAgent が返す HTTP ヘッダーを変更するだけです。 他にも JavaScript コードを利用してブラウザー識別を行うメソッドがあるかもしれません。
Opera 6 以降では、メニューからブラウザー識別文字列を設定できます。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 1 | 12 | 1 | 1 | 18 | 1 | |
| WorkerNavigator.userAgent` は読み取り専用プロパティで、現在のブラウザーのユーザーエージェント文字列を返します。 | 4 | 12 | 3.5 | 4 | 18 | 5 |
基本構文
JAVASCRIPT
console.log(navigator.userAgent);
// On Chrome on macOS, logs something like "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" (reduced UA string)
// On Firefox on Windows, logs something like "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0" 実務での使いどころ
-
User agent sniffing の活用
Navigator.userAgent は読み取り専用のプロパティで、現在のブラウザーのユーザーエージェント文字列を返します。
注意点
- 古いブラウザでは対応していない場合がある。
実装メモ
- 一部の API はセキュアコンテキスト (HTTPS) やユーザー操作起点を必要とする。利用前に要件を確認すること。