ブラウザが IE かどうかだけ知りたい場合は、次のようにします。
var isIE = false;
var ua = window.navigator.userAgent;
var old_ie = ua.indexOf('MSIE ');
var new_ie = ua.indexOf('Trident/');
if ((old_ie > -1) || (new_ie > -1)) {
isIE = true;
}
if ( isIE ) {
//IE specific code goes here
}
更新 1: より良い方法
今はこれをお勧めします。それはまだ非常に読みやすく、コードがはるかに少ないです:)
var ua = window.navigator.userAgent;
var isIE = /MSIE|Trident/.test(ua);
if ( isIE ) {
//IE specific code goes here
}
短縮された回答のコメントで JohnnyFun に感謝します:)
更新2:CSSでのIEのテスト
まず、可能であれば@supports
、ブラウザーが特定の CSS 機能をサポートしているかどうかを確認するために、JS の代わりにステートメントを使用する必要があります。
.element {
/* styles for all browsers */
}
@supports (display: grid) {
.element {
/* styles for browsers that support display: grid */
}
}
(IE はまったくサポートしておらず、ステートメント@supports
内に配置されたスタイルを無視することに注意してください。)@supports
問題を解決できない場合は、@supports
これを行うことができます。
// JS
var ua = window.navigator.userAgent;
var isIE = /MSIE|Trident/.test(ua);
if ( isIE ) {
document.documentElement.classList.add('ie')
}
/* CSS */
.element {
/* styles that apply everywhere */
}
.ie .element {
/* styles that only apply in IE */
}
(注: classList
JS は比較的新しく、IE ブラウザーのうち、IE11 でのみ動作すると思います。おそらく IE10 でも動作します。)
プロジェクトで SCSS (Sass) を使用している場合、これは次のように簡略化できます。
/* SCSS (Sass) */
.element {
/* styles that apply everywhere */
.ie & {
/* styles that only apply in IE */
}
}
更新 3: Microsoft Edge の追加 (非推奨)
リストに Microsoft Edge も追加する場合は、次の操作を実行できます。ただし、Edge は IE よりも優れたブラウザーであるため、お勧めしません。
var ua = window.navigator.userAgent;
var isIE = /MSIE|Trident|Edge\//.test(ua);
if ( isIE ) {
//IE & Edge specific code goes here
}