はじめに
きっかけは友人が
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のバグか仕様、だれかなんでこうなってるか教えて