[JavaScript] 1行でIE11を判定する方法
2 min read
userAgent を利用して取得する方法
一般的には下記のように IE の判定を行ってきた。
// userAgent を取得、小文字にする
const ua = window.navigator.userAgent.toLowerCase();
// ユーザーエージェントから Internet Explorer であるかを判定
const isIE = ua.indexOf("msie") >= 0 || ua.indexOf("trident") >= 0;
※ IE11 からはmsie
ではなくtrident
という文字になっている
1 行で取得する方法
userAgent を利用した取得の方法は一般的で IE 以外のブラウザの反映にも利用できるため、ブラウザの判定という一貫で合理性があった。
ただ近年のモダンブラウザの対応によって、ブラウザの判定理由が「IE のみを判定する」になり、userAgent を利用するのは合理的ではない場面も多くなったように思う。
document.documentMode
を利用する。
document.documentMode;
従来、 documentMode プロパティは、現在のドキュメントをレンダリングするために IE が使用するモードを返却する(IE 専用のプロパティで、IE8 から利用可能)。
このプロパティは、IE 以外のブラウザでは実装されていないため、IE 以外ではundefined
が返却される。
// ユーザーエージェントから Internet Explorer であるかを判定
const isIE = !!document.documentMode;