UserAgent を 用いた IE11 の判別方法

0 件のコメント
  • (2015/01/04 Windows 10 Technical Preview の useragent を追記)
  • (2013/10/22 jQuery プラグイン でも判定できるようにしました。元記事は こちら 。)

Internet Explorer 11 から UserAgent 文字列が変更になるそうです (詳細は こちら)。 その結果、今まで MSIE を使った Internet Explorer の判別が出来なくなります。 これでは困るので、従来の IE も含めて IE であることを判別できる JavaScript を以下で記載します。

IE11 の UserAgent サンプル

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 6.4; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko

全 IE 判定 サンプルコード

var ua, isIE, array, version;

// UserAgetn を小文字に正規化
ua = window.navigator.userAgent.toLowerCase();

// IE かどうか判定
isIE = (ua.indexOf('msie') >= 0 || ua.indexOf('trident') >= 0);

// IE の場合、バージョンを取得
if (isIE) {
    array = /(msie|rv:?)\s?([\d\.]+)/.exec(userAgent);
    version = (array) ? array[2] : '';
}

IE11 では "Trident を含んでいるかどうか" で、IE かどうか を判定するようです。 ただし、IE11より古いバージョンでは MSIE が使えるので、そちらを利用します。 上記 サンプルコード では、 or をとって対応しています。

バージョン文字列は、IE11 だと rv 以降に記述され、 IE11 より古いバージョンでは MSIE 以降に記述されます。 上記 サンプルコード では、正規表現中の or で違いを吸収しています。

おまけ

jQuery プラグイン でも判定できるようにしました。

今回、以下のサイトを参考にしました。