ブラウザ判定に 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 とか使いなってことでしょうか。
ピンバック: [JavaScript] Memo, IE 10, IE 11を判別するnavigatorプロパティ - userAgentを使わずに « イナヅマTVログ