[JavaScript] 1行でIE11を判定する方法

userAgentを利用して取得する方法

一般的には下記のように IE の判定を行ってきた。

// userAgent を取得、小文字にする
const ua = window.navigator.userAgent.toLowerCase();

// ユーザーエージェントから Internet Explorer であるかを判定
const isIE = (ua.indexOf('msie') >= 0 || ua.indexOf('trident') >= 0);

※ IE11からはmiseではなくtridentという文字になっている

1行で取得する方法

userAgentを利用した取得の方法は一般的でIE以外のブラウザの反映にも利用できるため、ブラウザの判定という一貫で合理性があった。
ただ近年のモダンブラウザの対応によって、ブラウザの判定理由が「IEのみを判定する」になり、userAgentを利用するのは合理的ではない場面も多くなったように思う。

document.documentModeを利用する。

document.documentMode

従来、 documentMode プロパティは、現在のドキュメントをレンダリングするためにIEが使用するモードを返却する(IE 専用のプロパティで、IE8 から利用可能)。
このプロパティは、IE 以外のブラウザでは実装されていないため、IE 以外ではundefinedが返却される。

// ユーザーエージェントから Internet Explorer であるかを判定
const isIE = !!document.documentMode;