navigatorオブジェクトによるブラウザ識別まとめ

JavaScriptには、navigatorオブジェクトという、ブラウザ等の利用環境を識別するオブジェクトがあります。なんとなく気になったので、”appCodeName”と”appName”と”appVersion”と”userAgent”をそれぞれのブラウザで見たときの動作を、バージョンなどバラバラですが、調べれた分だけまとめてみました。なお、appVersionやuserAgentのかっこ内は、利用しているパソコンの環境によっても異なることがあります。

appCodeName
appName
appVersion
userAgent
IE6 Mozilla
Microsoft Internet Explorer
4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
IE7
(IE9の開発者ツール使用時)
Mozilla
Microsoft Internet Explorer
4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; HPDTDF; BRI/2; .NET4.0C; .NET4.0E)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; HPDTDF; BRI/2; .NET4.0C; .NET4.0E)
IE8 Mozilla
Microsoft Internet Explorer
4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; BTRS122159; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; BTRS122159; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)
IE9 Mozilla
Microsoft Internet Explorer
5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; HPDTDF; BRI/2; .NET4.0C; .NET4.0E)
Firefox4.0.1 Mozilla
Netscape
5.0 (Windows)
Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Firefox9.0.1 Mozilla
Netscape
5.0 (Windows)
Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
Chrome12.0.742.122 Mozilla
Netscape
5.0 (Windows NT 5.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30
Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30
Chrome16.0.912.75 Mozilla
Netscape
5.0 (Windows NT 5.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7
Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7
Safari5.0.5 Mozilla
Netscape
5.0 (Windows NT 5.1) AppleWebKit/534.52.7 (KHTML, like Gecko) Version/5.1.2 Safari/534.52.7
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1
Safari5.1.2 Mozilla
Netscape
5.0 (Windows; U; Windows NT 5.1; ja-JP) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1
Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.52.7 (KHTML, like Gecko) Version/5.1.2 Safari/534.52.7
Opera11.11 Mozilla
Opera
9.80 (Windows NT 5.1; U; ja)
Opera/9.80 (Windows NT 5.1; U; ja) Presto/2.8.131 Version/11.11
Opera11.60 Mozilla
Opera
9.80 (Windows NT 5.1; U; ja)
Opera/9.80 (Windows NT 6.1; U; ja) Presto/2.10.229 Version/11.60
あなたの環境

appCodeNameはいったいなんなんでしょう。ブラウザのコードネームを示すそうなのですが、全部”Mozilla”って・・・。多分中には、”Mozilla”以外を返すものもあるのでしょう。
 ところで、パッと見userAgentを見たら何のブラウザを使ってるか判別できそうですが、どうもこの値は偽装できてしまうそうです。でも、userAgentを使わなかったら、Firefoxを判別できない・・・。

これで終わるのはなんなので簡単に、navigatorオブジェクトを見てリンク先を変える関数作ってみた。

function navlink(bro1link, bro2link, nav){
	if(nav>-1) {
		location.href = bro1link;
	} else {
		location.href = bro2link;
	}
}

使用例

<a href="javascript:navlink('http://am-yu.net/ie9/','http://am-yu.net/ie8/',navigator.appVersion.indexOf('MSIE 9.0'))">クリック!</a>

クリック!

第三引数に、navigatorオブジェクトの検索結果、第一引数に真だった時のリンク先。第二引数に偽だった時のリンク先。ものすごい、使う人にとって親切じゃない関数! もっと使いやすい関数が書けるようになりたい。後、変数名もうまくつけれるよになりたい・・・

応用例

<a href="javascript:navlink('javascript:navlink(\'http://am-yu.net/ie9/\',\'http://am-yu.net/ie8/\',navigator.appVersion.indexOf(\'MSIE 9.0\'))','javascript:navlink(\'http://am-yu.net/opera/\',\'javascript:navlink(\\\'http://am-yu.net/googlechrome/\\\',\\\'http://am-yu.net/browserpage/\\\',navigator.appVersion.indexOf(\\\'Chrome\\\'))\',navigator.appName.indexOf(\'Opera\'))',navigator.appName.indexOf('Internet Explorer'))">クリック!</a>

クリック!

まどろっこしいにもほどがある!!

余談ですが、WordPressが勝手に'(シングルクォテーション)を”(ダブルクォテーション)に変換するので困りました。上記の”クリック!”というリンクはJavaScriptで制御しています。

コメント

タイトルとURLをコピーしました