Navigator【ブラウザ】オブジェクト
メモ
概要
- ブラウザ情報のオブジェクト (HTML仕様で定義:外部リンク 参照)
- window【ウィンドウ】オブジェクトの子 (省略可能)
関連
判定・情報
〔 OS・ブラウザ 判定 実装例 〕- OS (バージョン)・ブラウザ (バージョン) 判定
- navigator.userAgent【ユーザエージェント】プロパティ解析 (但し、偽装可)
- OS・ブラウザ 判定 実装例 参照
- この環境の現在の基本情報 処理中...
- OS・ブラウザ情報 処理中...
外部リンク
- HTML Living Standard (英語)
- W3C (英語)
- MDN
- Microsoft Learn
- 携帯端末
プロパティ
インタフェース | プロパティ | 型 | 説明 |
---|---|---|---|
NavigatorID | appCodeName | DOMString | コードネーム ("Mozilla" 固定) |
NavigatorID | appName | DOMString | 名前 ("Netscape" 固定) |
NavigatorID | appVersion | DOMString | バージョン |
NavigatorStorageUtils | cookieEnabled | boolean | クッキーの使用可否 |
NavigatorCookies | cookieEnabled | ||
NavigatorPlugins | javaEnabled | boolean | MIME:"application/x-java-vm" のサポート有無 |
NavigatorLanguage | language | DOMString? | 言語 (BCP 47) |
NavigatorLanguage | languages | FrozenArray<DOMString> | 言語リスト (BCP 47) |
NavigatorOnLine | onLine | boolean | オンライン状態 (true:オンライン / false:オフライン) |
NavigatorID | oscpu | DOMString | OS・CPU |
NavigatorID | platform | DOMString | プラットフォーム ("Win32"・"MacIntel"・"MacPPC"・"iPad"・"iPhone"・"iPod touch"・"Linux i686"・"FreeBSD i386"・"Linux armv7l" 等) |
NavigatorID | product | DOMString | 製品 ("Gecko" 固定) |
NavigatorID | productSub | DOMString | 製品サブ |
NavigatorID | userAgent | DOMString | ユーザエージェント OS・ブラウザの判定で使用 (但し、偽装可能) |
userAgentData | ユーザエージェント クライアント ヒント 詳細情報は非同期で取得 OS・ブラウザの判定で使用 | ||
NavigatorID | vendor | DOMString | ベンダー |
NavigatorID | vendorSub | DOMString | ベンダーサブ ("" 固定) |
MIME情報 | |||
NavigatorPlugins | MimeTypeArray | mimeTypes | MIME情報 配列 |
MimeTypeArray | mimeTypes.length | unsigned long | MIME情報数 |
MimeTypeArray | mimeTypes[] | MimeType | MIME情報 |
MimeType | mimeTypes[].type | DOMString | 種類 |
MimeType | mimeTypes[].description | DOMString | 説明 |
MimeType | mimeTypes[].suffixes | DOMString | 拡張子 |
MimeType | mimeTypes[].enabledPlugin | Plugin | プラグイン情報 (相互参照) |
プラグイン情報 | |||
NavigatorPlugins | plugins | PluginArray | プラグイン情報 配列 |
PluginArray | plugins.length | unsigned long | プラグイン数 |
PluginArray | plugins[] | Plugin | プラグイン情報 |
Plugin | plugins[].name | DOMString | 名前 |
Plugin | plugins[].description | DOMString | 説明 |
Plugin | plugins[].filename | DOMString | ファイル名 |
Plugin | plugins[].length | unsigned long | MIME情報数 |
Plugin | plugins[][] | MimeType? | MIME情報 (相互参照) |
メソッド
メソッド | 説明 | |
---|---|---|
NavigatorContentUtils | DOMString isContentHandlerRegistered(DOMString mimeType, USVString url) | |
NavigatorContentUtils | DOMString isProtocolHandlerRegistered(DOMString scheme, USVString url) | |
NavigatorPlugins | boolean javaEnabled() | MIME:"application/x-java-vm" のサポート有無 |
NavigatorContentUtils | void registerContentHandler(DOMString mimeType, DOMString url, DOMString title) void registerContentHandler(DOMString mimeType, USVString url, DOMString title) | |
NavigatorContentUtils | void registerProtocolHandler(DOMString scheme, DOMString url, DOMString title) void registerProtocolHandler(DOMString scheme, USVString url, DOMString title) | |
NavigatorID | boolean taintEnabled() | (false 固定) |
NavigatorContentUtils | void unregisterContentHandler(DOMString mimeType, DOMString url) void unregisterContentHandler(DOMString mimeType, USVString url) | |
NavigatorContentUtils | void unregisterProtocolHandler(DOMString scheme, DOMString url) void unregisterProtocolHandler(DOMString scheme, USVString url) | |
NavigatorStorageUtils | void yieldForStorageUpdates() | |
mimeTypes[] (MIME情報) | ||
MimeTypeArray | getter MimeType? item(unsigned long index) | インデックス参照 ([index]) |
MimeTypeArray | getter MimeType? namedItem(DOMString name) | 名前参照 ([name]) |
plugins[] (プラグイン情報) | ||
PluginArray | getter Plugin? item(unsigned long index) | インデックス参照 ([index]) |
PluginArray | getter Plugin? namedItem(DOMString name) | 名前参照 ([name]) |
PluginArray | void refresh(optional boolean reload = false) | リフレッシュ |
PluginArray.Plugin | getter MimeType? item(unsigned long index) | インデックス参照 ([index]) |
PluginArray.Plugin | getter MimeType? namedItem(DOMString name) | 名前参照 ([name]) |
OS・ブラウザ 判定 実装例
(正規表現 参照)
【呼び出し方法】
var ua = navigator.userAgent;
var os = getOS(ua);
var osDetail = getOSDetail(ua);
var browser = getBrowser(ua);
var browserDetail = getBrowserDetail(ua);
/**
* OS・ブラウザ 判定 共通関数
* @param {string} userAgent ユーザエージェント
* @param {Array} list 判定用の2次元配列 ([【検索文字列 (正規表現可)】, 【返却文字列 ({0}~:キャプチャ文字列)】])
* @param {boolean} raw 検索文字列の返却有無 (省略可)
* @return OS 文字列
*/
function match(userAgent, list, raw) {
try {
var result = "";
for (var i = 0; i < list.length; i++) {
var match = userAgent.match(list[i][0]);
if (match != null) {
result = list[i][1];
if (raw) {
result = match[0];
}
else {
var str;
for (var i = 1; i < match.length; i++) {
str = "{" + (i - 1) + "}";
result = result.replace(str, match[i]);
}
}
break;
}
}
}
catch (e) {
result = "";
}
return result;
}
/**
* OS 取得 (windows のみバージョン付き)
* @param {string} userAgent ユーザエージェント
* @return OS 文字列
* @todo OS リストは用途に合わせて編集
*/
function getOS(userAgent) {
// OS リスト
var list = [
// Windows (Windows XP 以降)
[/Windows NT 10\.0/i, "Windows 10"],
[/Windows NT 6\.3/i, "Windows 8.1"],
[/Windows NT 6\.2/i, "Windows 8"],
[/Windows NT 6\.1/i, "Windows 7"],
[/Windows NT 6\.0/i, "Windows Vista"],
[/Windows NT 5\.2/i, "Windows XP"],
[/Windows NT 5\.1/i, "Windows XP"],
// Mac OS X・iOS ("iPad" → "Mac OS X") ("iPod" → "iPhone" → "Mac OS X")
[/iPad/i, "iOS"],
[/iPod/i, "iOS"],
[/iPhone/i, "iOS"],
[/Mac OS X/i, "Mac OS X"],
// Android・Linux (Android → Linux)
[/Android/i, "Android"],
[/Linux/i, "Linux"]
// その他 (任意 追加・削除)
];
return match(userAgent, list);
}
/**
* OS (詳細) 取得
* @param {string} userAgent ユーザエージェント
* @param {boolean} raw 検索文字列の返却有無 (省略可)
* @return OS 文字列
* @todo OS リストは用途に合わせて編集
*/
function getOSDetail(userAgent, raw) {
// OS リスト
var list = [
// Windows (Windows XP 以降)
[/Windows NT 10\.0/i, "Windows 10"],
[/Windows NT 6\.3/i, "Windows 8.1"],
[/Windows NT 6\.2/i, "Windows 8"],
[/Windows NT 6\.1/i, "Windows 7"],
[/Windows NT 6\.0/i, "Windows Vista"],
[/Windows NT 5\.2/i, "Windows XP"],
[/Windows NT 5\.1/i, "Windows XP"],
// Mac OS X・iOS ("iPad" → "Mac OS X") ("iPod" → "iPhone" → "Mac OS X")
[/iPad[; a-z]+([0-9_\.]+)/i, "iOS {0}"],
[/iPod[; a-z]+([0-9_\.]+)/i, "iOS {0}"],
[/iPhone[; a-z]+([0-9_\.]+)/i, "iOS {0}"],
[/Mac OS X ([0-9_\.]+)/i, "Mac OS X {0}"],
// Android・Linux (Android → Linux)
[/Android ([0-9\.]+)/i, "Android {0}"],
[/Linux/i, "Linux"]
// その他 (任意 追加・削除)
];
return match(userAgent, list, raw);
}
/**
* ブラウザ 取得
* @param {string} userAgent ユーザエージェント
* @return ブラウザ 文字列
* @todo ブラウザ リストは用途に合わせて編集
*/
function getBrowser(userAgent) {
// ブラウザ リスト
var list = [
// IE
[/Trident\/7\.0/i, "IE 11"],
[/MSIE ([0-9]+)/i, "IE {0}"],
// Edge
[/Edge/i, "Edge"],
// Firefox
[/Firefox/i, "Firefox"],
[/FxiOS/i, "Firefox"],
// Opera
[/Opera/i, "Opera"],
[/OPR/i, "Opera"],
[/OPiOS/i, "Opera"],
[/Coast/i, "Opera Coast"],
// Chrome for iOS
[/CriOS/i, "Chrome"],
// Google アプリ
[/GSA/i, "Google アプリ"],
// Yahoo
[/YJApp-Android/i, "Yahoo!ブラウザー"],
[/YJApp-iOS/i, "Yahoo!ブラウザー"],
// その他 (任意追加)
// 以下は固定 (~ → Chrome → Safari)
[/Chrome/i, "Chrome"],
[/Safari/i, "Safari"]
];
return match(userAgent, list);
}
/**
* ブラウザ (詳細) 取得
* @param {string} userAgent ユーザエージェント
* @param {boolean} raw 検索文字列の返却有無 (省略可)
* @return ブラウザ 文字列
* @todo ブラウザ リストは用途に合わせて編集
*/
function getBrowserDetail(userAgent, raw) {
// ブラウザ リスト
var list = [
// IE
[/Trident\/7\.0/i, "IE 11"],
[/MSIE ([0-9]+)/i, "IE {0}"],
// Edge
[/Edge\/([0-9\.]+)/i, "Edge {0}"],
// Firefox (for iOS はアルファベットを含む)
[/Firefox\/([0-9\.]+)/i, "Firefox {0}"],
[/FxiOS\/([0-9\.a-z]+)/i, "Firefox {0}"],
// Opera
[/Opera\/([0-9\.]+)/i, "Opera {0}"],
[/OPR\/([0-9\.]+)/i, "Opera {0}"],
[/OPiOS\/([0-9\.]+)/i, "Opera {0}"],
[/Coast\/([0-9\.]+)/i, "Opera Coast {0}"],
// Chrome for iOS
[/CriOS\/([0-9\.]+)/i, "Chrome {0}"],
// Google アプリ
[/GSA\/([0-9\.]+)/i, "Google アプリ {0}"],
// Yahoo
[/YJApp-Android [a-z\.]+\/([0-9\.]+)/i, "Yahoo!ブラウザー {0}"],
[/YJApp-iOS [a-z\.]+\/([0-9\.]+)/i, "Yahoo!ブラウザー {0}"],
// その他 (任意追加)
// 以下は固定 (~ → Chrome → Safari)
[/Chrome\/([0-9\.]+)/i, "Chrome {0}"],
[/Version\/([0-9\.]+).+Safari/i, "Safari {0}"]
];
return match(userAgent, list, raw);
}