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)を読み込んだ時の備忘録