ページ

2009年1月7日水曜日

[IE] navigator.appVersion がバグる

http://961pro.jp/ を見に行ったときに気付きましたw
この間まで見れていたはずなのに

このページを正しくご覧頂くにはFLASH PLAYERのバージョン8以上が必要です。

なんて表示されて Flash 部分がまったく表示されなくなっちゃいました。
もちろん、Flash は 10.0.12.36 が入っています (たぶん最新バージョン)。
ちなみに、使っている IE は 7.0.5730.13 です。

なぜこうなるのかと JavaScript のソースをのぞいてみました。

var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;

というコードで IE かどうか? Windows かどうか?を判定しています。
そこで navigator.appVersion を表示させてみました。結果は↓

4.0 (compatible; MSIE 6.0)

あれれ?
試しに navigator.userAgent を表示させてみると、

Mozilla/4.0 (compatible; MSIE 6.0)

むむぅ。
なぜこんなに短いんだ?
JavaScript でなく、サーバ側の HTTP_USER_AGENT を表示させてみると、

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; MS-RTC LM 8; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)

こんなに長いのに、JavaScript の navigator.appVersion ではばっさり削られちゃってます。

うーむ、、、なんでこんなことになるんだろう。。。
HTTP_USER_AGENT の最後にくっついている 「OfficeLiveConnector.1.3; OfficeLivePatch.0.0」 はこの間 http://download.live.com/ で Windows Live Writer Beta とか Messenger Beta とかといっしょに入れた Outlook Connector が追加したんだろうなぁ、、、なんて考えていて、なにげに見ると 「OfficeLiveConnector.1.3; OfficeLivePatch.0.0」 が無いと 251文字、あると 297文字。
ちょっwwwwおまwwwwwまさかwwwww

このずらずら続いている部分はレジストリの Post Platform から取得されています。
これについてはちゃんと MSDN にも解説があります。
ユーザー エージェント文字列を理解する
そこで、レジストリエディタで 「OfficeLiveConnector.1.3」 と 「 OfficeLivePatch.0.0」 を削除して IE を再起動。
これで navigator.appVersion を表示してみると

4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; MS-RTC LM 8; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

となりました。

なんてこったい。
User Agent が長すぎると navigator.appVersion や navigator.userAgent がバグっちゃうのね。
で、その境界は 256文字くらいと予想 (検証してないけど、たぶんそうでしょw)。
つか、これってしゃれにならないんでは?
普通の人だとここまで長くならないかもしれないけど、開発者だと .NET Framework を一通り + Office 2007 + Windows Live Beta を一通りで上記の長さになると思うんだけど。

つか、この間 http://www.vimeo.com/ を見ようとしたら同じように Flash のバージョンが古いと言われたんだけど、これが理由だったのか。


0 件のコメント:

コメントを投稿