web関連

【javascrip】Internet Explorerを判定する方法

IEの時だけをjavascripで判定しようとしたら方法がたくさんあった時の備忘録

ユーザーエージェントを使ってIEを判別

簡単でよく見る書き方

var browser = window.navigator.userAgent.toLowerCase();
if (browser.indexOf("msie") != -1 || browser.indexOf("trident") != -1) {
  // ここにIE10とIE11のみ読み込みたい記述
}

msie…IE10判別
trident…IE11判別
toLowerCase()で文字列を小文字化している

その他Internet Explorerかどうか判別する方法

以下はIE11のみ出力する条件式

if (document.documentMode && window.MSInputMethodContext && document.uniqueID) {
  // ここにIE11のみ読み込みたい記述
  console.log("IE11だよ");
}

// ↓ IEのバージョンを返す、「11」とか「10」って感じ
console.log(document.documentMode);
// ↓ IE10以下でundefined、IE11でオブジェクト返す
console.log(window.MSInputMethodContext);
// ↓ ms__id01という値を返す、ページを更新すると数値が増加
console.log(document.uniqueID);

基本的に上記プロパティはInternet Explorer他のブラウザ(Edge含む)ではundefinedを返すのでどれを使っても問題ない

Internet Explorerかを判別するならwindow.MSInputMethodContextを抜いて以下の記述でいいのかなと思う

if (document.documentMode && document.uniqueID) {
  // ここにInternet Explorerで読み込みたい記述
  console.log("Internet Explorerだよ");
}

ユーザーエージェントを使うか今回の条件式を使うかは個人の好みだと思う
ただ、短く書ける分上記の書き方が好まれると思う

↓以下は実際にIEのみ外部jsファイル(Polyfill)を読み込んだ時の備忘録

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。