Navigatorオブジェクト
Navigatorオブジェクトを試してみます。
Navigatorオブジェクトはブラウザ関係の情報が格納されています。
下記にサンプルコードを書いてみます。
let navi1 = navigator.userAgent; console.log('navi1 -> ' + navi1); let navi2 = navigator.appName; console.log('navi2 -> ' + navi2); let navi3 = navigator.appVersion; console.log('navi3 -> ' + navi3); let navi4 = navigator.platform; console.log('navi4 -> ' + navi4); let navi5 = navigator.oscpu; console.log('navi5 -> ' + navi5);
上記を実行すると、下記のような結果になります。
navi1 -> Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0 navi2 -> Netscape navi3 -> 5.0 (Windows) navi4 -> Win32 navi5 -> Windows NT 10.0; Win64; x64
検証に使用したブラウザはFirefoxで、同じコードをChromeで確認すると、次のようになります。
navi1 -> Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36 navi2 -> Netscape navi3 -> 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36 navi4 -> Win32 navi5 -> undefined
ただ、値の4つめ「navi4」のplatformについては、検証に使っているOSが64bit版windows10ですが、なぜかWin32という出力になります。
これはブラウザ間の出力を統一する為に、先にChromeが「Win32」という出力をする作りにした為、その後にFirefoxがChromeの出力に合わせ、ブラウザが返すOS情報を統一して出力するようになったという歴史的背景があるようです。
こちらのサイト「Firefox サイト互換性情報」にその辺りの説明が詳しく記述されています。
また、5つめの「navi5」についてはChromeでは定義されておらず、undefinedになります。
この辺りもブラウザ間で微妙に差異がある為、プログラム実装時には注意が必要と言えます。