読者です 読者をやめる 読者になる 読者になる

yumetodoの旅とプログラミングとかの記録

旅や登山の記録やプログラミング関連の話とかフリーソフト紹介とか

FirefoxのappVersionがおかしい

はじめに

きっかけは友人が
http://onigiri.hangame.co.jp/#
のサイトのゲームをFirefoxでも遊びたいと言ったことから始まった。

どうせUser-Agentが問題なんでしょ、と思い
ua-site-switch
User-Agent JS Fixer
を導入した。しかし遊べない。どうやってIEを判別しているのかと思い問題のサイトを調べてみた

問題のIE判別コード

どうやら問題の判別コードはhtmlに直書きしている模様。

function noIE(str){
	
			//IE判別
			if(navigator.appVersion.indexOf("MSIE") != -1 || navigator.appVersion.indexOf("rv:11") != -1){
				goGameStart();
			}else{
				alert("ゲームスタートボタンは、Windows および Internet Explorer 8 以降でご利用いただけます。");
			}
		
}

やってることとしては、「navigator.appVersion」をString.prototype.indexOf()を使って"MSIE"が含まれているか(~IE10用)"rv:11"が含まれていれば(IE11)IEと認識する

特に問題なさそう。ということは「navigator.appVersion」に入っている値が問題なんだろう、と察しがつく。

navigator.appVersionとnavigator.userAgentを調べる

前項で「navigator.appVersion」が怪しいと分かったのでUA偽装なしで調べてみる。

IE 11.0.9600.17728
appVersion:"5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; MAM3; MAMIJS)"
userAgent:"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; MAM3; MAMIJS)"
Chrome 43.0.2357.124 m
appVersion:"5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36"
userAgent:"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36"
Firefox 38.0.5
appVersion:"5.0 (Windows)"
userAgent:"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0"

待って、なんかFirefoxだけ明らかにおかしいんですけど。どうなってるんだってばよ!

結論

Firefoxのバグか仕様、だれかなんでこうなってるか教えて