イナヅマTVログ

[JavaScript] IE 11ブラウザ判定方法

| 1件のコメント

ブラウザ判定に userAgent 使っちゃダメなのは知ってはいるけどもって話です。

IE 11 が登場しどうしても切り分けたいことがあったのでメモっておきます。

IE 11 userAgent

IE 11 の userAgent から msie の文字が無くなっています。
なんてことしてくれるんだよー!と思ってしまいます。

Windows 8.1 + IE 11 (VMWare Windows 8.0 update to 8.1)
“Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; .NET4.0E; .NET4.0C; Tablet PC 2.0; rv:11.0) like Gecko”
Tablet って入ってた。
そんなもんなんかな。

Internet Explorer Dev Center: Compatibility changes in IE11
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko

互換性 (“compatible”) トークンとブラウザー (“MSIE”) トークンが削除されました。
“like Gecko” トークンが追加されました (他のブラウザーとの一貫性のため)。
ブラウザーのバージョンが、新しいリビジョン (“rv”) トークンによって報告されます。

userAgent を正規表現で。
正規表現とかむっちゃ苦手なんやけど、こんな風にしてみた。

var ie11 = !!navigator.userAgent.match(/trident\/[7]/) && !!navigator.userAgent.match(/rv:[11]/);

IE 11 userAgent を使わない

stackoverflow: How to detect IE 11 with javascript in Asp.net

var ie11 = !!window.MSStream;

別の方のAnswerで

DO NOT DO BROWSER DETECTION! It will break, and it will cause you problems.

IE11 has a completely different User Agent string to previous IE versions; it not longer includes the “MSIE” text. This is why your detection code doesn’t work.

IE 12 とかでてきたらどうするん? てなことですかね。

Feature detection

jQuery も userAgent でブラウザ判定するのでは無く機能で切り分けるべきだって言ってましたよねー。
1.9 で jQuery.browser 削除されるし…
jQuery API: jQuery.browser

Please try to use feature detection instead.

feature detection は Modernizr とか使いなってことでしょうか。

1件のコメント

  1. ピンバック: [JavaScript] Memo, IE 10, IE 11を判別するnavigatorプロパティ - userAgentを使わずに « イナヅマTVログ

コメントを残す