Navigator【ブラウザ】オブジェクト

メモ概要 判定・情報 現在の基本情報 OS・ブラウザ情報  ) プロパティ メソッド OS・ブラウザ 判定 実装例

メモ

概要

関連

判定・情報

OS・ブラウザ 判定 実装例

プロパティ

インタフェースプロパティ説明
NavigatorIDappCodeName DOMStringコードネーム ("Mozilla" 固定)
NavigatorIDappName DOMString名前 ("Netscape" 固定)
NavigatorIDappVersion DOMStringバージョン
NavigatorStorageUtilscookieEnabled booleanクッキーの使用可否
NavigatorCookiescookieEnabled
NavigatorPluginsjavaEnabled boolean MIME:"application/x-java-vm" のサポート有無
NavigatorLanguagelanguage DOMString?言語 (BCP 47)
NavigatorLanguagelanguages FrozenArray<DOMString>言語リスト (BCP 47)
NavigatorOnLineonLine boolean オンライン状態 (true:オンライン / false:オフライン)
NavigatorIDoscpu DOMStringOS・CPU
NavigatorIDplatform DOMString プラットフォーム
("Win32"・"MacIntel"・"MacPPC"・"iPad"・"iPhone"・"iPod touch"・"Linux i686"・"FreeBSD i386"・"Linux armv7l" 等)
NavigatorIDproduct DOMString製品 ("Gecko" 固定)
NavigatorIDproductSub DOMString 製品サブ
NavigatorIDuserAgent DOMString ユーザエージェント
OS・ブラウザの判定で使用 (但し、偽装可能)
userAgentData ユーザエージェント クライアント ヒント
詳細情報は非同期で取得
OS・ブラウザの判定で使用
NavigatorIDvendor DOMStringベンダー
NavigatorIDvendorSub DOMString ベンダーサブ ("" 固定)
MIME情報
NavigatorPluginsMimeTypeArray mimeTypesMIME情報 配列
MimeTypeArraymimeTypes.length unsigned longMIME情報数
MimeTypeArraymimeTypes[] MimeTypeMIME情報
MimeTypemimeTypes[].type DOMString種類
MimeTypemimeTypes[].description DOMString説明
MimeTypemimeTypes[].suffixes DOMString拡張子
MimeTypemimeTypes[].enabledPlugin Pluginプラグイン情報 (相互参照)
プラグイン情報
NavigatorPluginsplugins PluginArrayプラグイン情報 配列
PluginArrayplugins.length unsigned longプラグイン数
PluginArrayplugins[] Pluginプラグイン情報
Pluginplugins[].name DOMString名前
Pluginplugins[].description DOMString説明
Pluginplugins[].filename DOMStringファイル名
Pluginplugins[].length unsigned longMIME情報数
Pluginplugins[][] MimeType?MIME情報 (相互参照)

メソッド

メソッド説明
NavigatorContentUtils DOMString isContentHandlerRegistered(DOMString mimeType, USVString url)
NavigatorContentUtils DOMString isProtocolHandlerRegistered(DOMString scheme, USVString url)
NavigatorPluginsboolean 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)
NavigatorIDboolean 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)
NavigatorStorageUtilsvoid yieldForStorageUpdates()
mimeTypes[] (MIME情報)
MimeTypeArraygetter MimeType? item(unsigned long index) インデックス参照 ([index])
MimeTypeArraygetter MimeType? namedItem(DOMString name) 名前参照 ([name])
plugins[] (プラグイン情報)
PluginArraygetter Plugin? item(unsigned long index) インデックス参照 ([index])
PluginArraygetter Plugin? namedItem(DOMString name) 名前参照 ([name])
PluginArrayvoid refresh(optional boolean reload = false)リフレッシュ
PluginArray.Plugingetter MimeType? item(unsigned long index) インデックス参照 ([index])
PluginArray.Plugingetter 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);
}