ユーザーがIEを使用しているかどうかを確認する


391

特定のクラスのdivをクリックして、次のような関数を呼び出しています。

ユーザーがInternet Explorerを使用しているかどうかを関数の開始時に確認し、他のブラウザーを使用している場合は中止/キャンセルして、IEユーザーに対してのみ実行する方法はありますか?ここのユーザーはすべてIE8以降のバージョンを使用しているため、IE7以下のバージョンをカバーする必要はありません。

彼らが使用しているブラウザを特定できればそれはすばらしいことですが、必須ではありません。

関数の例:

$('.myClass').on('click', function(event)
{
    // my function
});

1
IEやその他のブラウザーを検出するには、モダナイザーを使用します。 stackoverflow.com/questions/13478303/...
クリス・

7
最新のWeb開発標準では、最初から古いバージョンのIE用に開発することは悪い習慣です。
Rosseyn、2015年

7
実際、この「悪い習慣」は標準自体によって強制されているため、開発者の責任ではありません...ブラウザーの動作は異なり、仕様は実装の問題に対して柔らかすぎます。地獄の1のようにバギーと退屈ではないではない何かを作るために持っているブラウザ検出を行うことを。他のベストプラクティスを提案しますWith modern web development, it's bad practice to support non-Chromium-based browsers (with Safari not considered to be Chromium-based at all)。申し訳ありませんが、この狂気はどこかの時点で終了する必要がありますし、何とか...
user2173353

2
「ブラウザの検出」よりも「機能の検出」を実行することは、今日より良い実践です。代わりに、ブラウザーが必要なことを行っているかどうかを確認します。
Chris Rogers、

2
@クリス-謝罪...それはもっと冗談のような口調を持つことを意味した。私は自分の喜びを盗んで、私に苦味と欲求不満を残したIEを責めるつもりです。:)
JDBは

回答:


477

以下のJavaScriptメソッドを使用します。

function msieversion() 
{
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

    if (msie > 0) // If Internet Explorer, return version number
    {
        alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
    }
    else  // If another browser, return 0
    {
        alert('otherbrowser');
    }

    return false;
}

詳細については、以下のMicrosoftサポートサイトをご覧ください。

スクリプトからブラウザのバージョンを確認する方法

更新:(IE 11サポート)

function msieversion() {

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

    if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))  // If Internet Explorer, return version number
    {
        alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
    }
    else  // If another browser, return 0
    {
        alert('otherbrowser');
    }

    return false;
}

27
ua変数がMSIEで始まることはないため、これはうまく機能しますが、記述if (msie > 0)は誤解を招きます。値が見つからない場合、indexOf()関数は0ではなく-1を返しますif (msie > -1)。したがって、説明がわかりやすくなります。
Neville Nazerane、2014年

61
これはIE11でNaNを返します。
verism 2014年

7
@verismその他:ものために働く、この答えをチェックIE 11stackoverflow.com/a/21712356/114029を
Leniel Maccaferri

8
navigator.userAgent.indexOf( "MSIE")> 0 || navigator.userAgent.indexOf( "Trident")> 0 || navigator.userAgent.indexOf( "Edge")> 0
tylermauthe 2015年

12
/Edge\/|Trident\/|MSIE /.test(window.navigator.userAgent)これが10と11で機能することはわかっています。<IE9とEdgeを確認できる場合は、回答を編集してください。
15

595

それから数年後、EdgeブラウザーはレンダリングエンジンとしてChromiumを使用するようになりました。
残念ながら、IE 11のチェックはまだ重要です。

IEの古いバージョンはなくなるはずなので、これはより簡単なアプローチです。

if (window.document.documentMode) {
  // Do IE stuff
}

ここに私の古い答え(2014)があります:

Edgeでは、ユーザーエージェント文字列が変更されました。

/**
 * detect IEEdge
 * returns version of IE/Edge or false, if browser is not a Microsoft browser
 */
function detectIEEdge() {
    var ua = window.navigator.userAgent;

    var msie = ua.indexOf('MSIE ');
    if (msie > 0) {
        // IE 10 or older => return version number
        return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
    }

    var trident = ua.indexOf('Trident/');
    if (trident > 0) {
        // IE 11 => return version number
        var rv = ua.indexOf('rv:');
        return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
    }

    var edge = ua.indexOf('Edge/');
    if (edge > 0) {
       // Edge => return version number
       return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
    }

    // other browser
    return false;
}

使用例:

alert('IEEdge ' + detectIEEdge());

IE 10のデフォルト文字列:

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)

IE 11のデフォルト文字列:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko 

エッジ12のデフォルト文字列:

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0 

Edge 13のデフォルト文字列(thx @DrCord):

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586 

エッジ14のデフォルト文字列:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/14.14300 

Edge 15のデフォルト文字列:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063 

エッジ16のデフォルト文字列:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299 

Edge 17のデフォルト文字列:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134 

Edge 18のデフォルトの文字列(インサイダープレビュー):

Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17730 

CodePenでのテスト:

http://codepen.io/gapcode/pen/vEJNZN


4
コメントありがとうございます。まだ回答を確認していませんが、1つコメントを付けておきます。最初の「if」に「return」が含まれているため、後で「else」は必要ありません。
マリオ

30
興味深いことに、なぜ新しいバージョンのIEでユーザーエージェント行を変更するのでしょうか。MSは、ひどいWebブラウザを検出することを真剣に望んでいません。
c00000fd 2015

3
@SameerAlibhaiこれは理論的には良さそうに聞こえますが、実際には、特に現在は実用的ではありません。単一の「機能」検出が網羅されておらず、特定の機能に実装の癖があり、ブラウザの知識がなければ回避できないという問題が発生する場合があります。ブラウザの統計情報を収集するような簡単なことをしたい場合はどうすればよいですか?
わずか

34
Edgeは実際には「IE12」ではありませんが、実際には完全に別のブラウザーです。Windows 10にはIE11とEdgeの両方がインストールされています。
moloko、2015

16
IEに対する私の憎しみが高まる
Kolob Canyon

135

ブラウザが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 */
}

(注:classListJSは比較的新しいものであり、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
}

5
または数バイトで同じ:ms_ie =〜ua.indexOf( 'MSIE')|| 〜ua.indexOf( 'Trident /'); ;-)
Simon Steinberger

12
私のバージョンは人間にとってははるかに即時的な意味がありますが、バイト数を少なくすることは常に良いことです:)
Daniel Tonon

7
またはms_ie = !!ua.match(/MSIE|Trident/)
xori

5
またはms_ie = /MSIE|Trident/.test(ua)
JohnnyFun

1
@SimonSteinbergerは~何か意味がありますか?
1.21ギガワット2017

45

これはtrue、すべてのバージョンのInternet Explorerで返されます。

function isIE(userAgent) {
  userAgent = userAgent || navigator.userAgent;
  return userAgent.indexOf("MSIE ") > -1 || userAgent.indexOf("Trident/") > -1 || userAgent.indexOf("Edge/") > -1;
}

userAgentパラメータはオプションで、ブラウザのユーザーエージェントがデフォルト。


これは良いはずですが、基本的にIEブラウザーのデフォルトの「return true」または「return 1」の値を設定するのを忘れていました。現在、IEブラウザーが検出された場合、これは値を返しません。
Vincent Edward Gedaria Binua

10
EdgeをIEとして扱いたいのはなぜですか?互換性の点では、これらは今日ほとんど共通点がありません。
minexew 2016年

@docta_faustus userAgentはパラメータではなく、グローバルです
bendytree 2017

29

これがAngularjsチームのやり方です(v 1.6.5):

var msie, // holds major version number for IE, or NaN if UA is not IE.

// Support: IE 9-11 only
/**
 * documentMode is an IE-only property
 * http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx
 */
msie = window.document.documentMode;

次に、数行のコードが全体に散らばっています。

if (event === 'input' && msie <= 11) return false;

そして

if (enabled && msie < 8) {

window.document.documentModeはMSエッジで定義されていない
のVeselin Vasilevの

25
MS EdgeはIEではないため、MS Edgeでは未定義です。
JCKödel

1
document.documentModeIE8 +でサポートされています。それはなります'undefined'...エッジやChrome / Firefox用。このコードを変更してvar IEver = window.document.documentMode || (window.attachEvent? 1 : 99);、IE8 +の場合は正確なIEバージョン、非IEブラウザーの場合は99(通常は最新のブラウザー)、古いIE5-7の場合は1を返すように変更しました。これは、通常、一部の古いIEに対してのみ特別な作業が必要になるためです。つまり、if (IEver < 9) { ... }古いIEであるかどうかを意味します
S.Serpooshan

29

ナビゲーターオブジェクトを使用してユーザーナビゲーターを検出できます。jqueryは必要ありません。

<script type="text/javascript">

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent) || navigator.userAgent.indexOf("Trident/") > -1 ){ 

 // Do stuff with Internet-Exploders ... :)
}

</script>

http://www.javascriptkit.com/javatutors/navigator.shtml


4
これは、私のIE11について私に誤りを与えます
カーティス

2
IE11のユーザーエージェントはMSIE(XX)とは異なります。IE11はTridentをチェックすることで見つかります。
Orpheus

これにより、Firefox 45.0.2では誤検知が発生します。
Tim S. Van Haren

テスト機能を使用すると、navigator.userAgent.indexOf(「トライデントを/」)を実行しているregexでのように、真または偽のdontリターンのindexOf間違ったテスト= -1!
ダハールユーセフ

10

上記の答えを使用します。シンプルで凝縮されたブール値を返します:

var isIE = /(MSIE|Trident\/|Edge\/)/i.test(navigator.userAgent);


1
Widnows 10のFireFox 44.0.2でfalseを返します。FireFoxのどのバージョンがtrue @ SiKni8を返しますか?
Arthur Hebert 2016

9

方法01:
$ .browserはjQueryバージョン1.3で廃止され、1.9で削除されました

if ( $.browser.msie) {
  alert( "Hello! This is IE." );
}

方法02:
条件付きコメントを使用する

<!--[if gte IE 8]>
<p>You're using a recent version of Internet Explorer.</p>
<![endif]-->

<!--[if lt IE 7]>
<p>Hm. You should upgrade your copy of Internet Explorer.</p>
<![endif]-->

<![if !IE]>
<p>You're not using Internet Explorer.</p>
<![endif]>

方法03:

 /**
 * Returns the version of Internet Explorer or a -1
 * (indicating the use of another browser).
 */
function getInternetExplorerVersion()
{
    var rv = -1; // Return value assumes failure.

    if (navigator.appName == 'Microsoft Internet Explorer')
    {
        var ua = navigator.userAgent;
        var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null)
            rv = parseFloat( RegExp.$1 );
    }

    return rv;
}

function checkVersion()
{
    var msg = "You're not using Internet Explorer.";
    var ver = getInternetExplorerVersion();

    if ( ver > -1 )
    {
        if ( ver >= 8.0 ) 
            msg = "You're using a recent copy of Internet Explorer."
        else
            msg = "You should upgrade your copy of Internet Explorer.";
    }

    alert( msg );
}

方法04:
JavaScript /手動検出を使用する

/*
     Internet Explorer sniffer code to add class to body tag for IE version.
     Can be removed if your using something like Modernizr.
 */
 var ie = (function ()
 {

     var undef,
     v = 3,
         div = document.createElement('div'),
         all = div.getElementsByTagName('i');

     while (
     div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i>< ![endif]-->',
     all[0]);

     //append class to body for use with browser support
     if (v > 4)
     {
         $('body').addClass('ie' + v);
     }

 }());

参照リンク


@radhe答えを更新しました。うまくいけば、これでうまくいくでしょう。
アーミルシャーザド2014

注:方法2は、IE10以降の標準モードでは機能しません。詳細情報:条件付きコメントはサポートされなくなりました
insertusernamehere

@insertusernamehereあなたは非常に正しい.ie10です。つまり、IE10のみのcss修正を行う場合、クラスの使用は最良のオプションの1つだと思います。Internet Explorer 10が".ie10"HTML要素<html class="ie10">にクラスを追加すると、それを次のように使用できます.ie10 .myclass {//some css here}
Aamir Shahzad

8

ブラウザがIE11以前かどうかを確認したかっただけです。

function isCrappyIE() {
    var ua = window.navigator.userAgent;
    var crappyIE = false;
    var msie = ua.indexOf('MSIE ');
    if (msie > 0) {// IE 10 or older => return version number        
        crappyIE = true;
    }
    var trident = ua.indexOf('Trident/');
    if (trident > 0) {// IE 11 => return version number        
        crappyIE = true;
    }
    return crappyIE;
}   

if(!isCrappyIE()){console.table('not a crappy browser);}

2
これにより、命名規則の標準に対する高い評価が得られました
redbandit

7
function detectIE() {
    var ua = window.navigator.userAgent;
    var ie = ua.search(/(MSIE|Trident|Edge)/);

    return ie > -1;
}

質問には答えません。EdgeはIEではありません。
hda

hda、2013年からの質問日、今日、「エッジ」を無視しないのは興味深いと思います
ボスコティガ

5

modernizrの使用

Modernizr.addTest('ie', function () {
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf('MSIE ') > 0;
    var ie11 = ua.indexOf('Trident/') > 0;
    var ie12 = ua.indexOf('Edge/') > 0;
    return msie || ie11 || ie12;
});

EdgeはIEではないため、質問には答えません。また、EdgeはIE12ではありません。ChromiumベースのEdgeがリリースされたら、このリストにChromeまたはOperaも追加する必要があります。(これによって達成したいことは何でも、Firefoxを検出する方が簡単です)
hda

5

または、この本当に短いバージョンで、ブラウザーがInternet Explorerの場合はtrueを返します。

function isIe() {
    return window.navigator.userAgent.indexOf("MSIE ") > 0
        || !!navigator.userAgent.match(/Trident.*rv\:11\./);
}

4

ブラウザーがIEかどうかを検出するためのさらに別の単純な(まだ人間が読める)関数(Edgeは無視しますが、これはまったく問題ありません):

function isIE() {
  var ua = window.navigator.userAgent;
  var msie = ua.indexOf('MSIE '); // IE 10 or older
  var trident = ua.indexOf('Trident/'); //IE 11

  return (msie > 0 || trident > 0);
}

3

useragentを使用したくない場合は、ブラウザがIEかどうかを確認するためにこれを実行することもできます。コメント付きのコードは実際にはIEブラウザーで実行され、「false」から「true」に変わります。

var isIE = /*@cc_on!@*/false;
if(isIE){
    //The browser is IE.
}else{
    //The browser is NOT IE.
}   

1
IE11は条件付きコンパイルをサポートしていません
Gabriel Llamas

私はこれを試してみましたが、まだうまくいきました。それはそれをサポートしていませんか?
dev4life 2015年

3

私はこれが古い質問であることを知っていますが、誰かが再びそれに遭遇し、IE11の検出で問題が発生した場合、IEのすべての現在のバージョンに対する実用的なソリューションを次に示します。

var isIE = false;
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
    isIE = true;   
}

3

私はこれを使いました

function notIE(){
    var ua = window.navigator.userAgent;
    if (ua.indexOf('Edge/') > 0 || 
        ua.indexOf('Trident/') > 0 || 
        ua.indexOf('MSIE ') > 0){
       return false;
    }else{
        return true;                
    }
}

2

ここに多くの答えがあります。入力を追加したいと思います。IE 11はフレックスボックス(そのすべての問題と不整合についてはこちらを参照)に関するお尻だったので、ユーザーがIEブラウザー(11まで)を使用しているかどうかを確認する簡単な方法が本当に必要でしたが、Edgeは実際にはEdgeを除外しているため、かなりいい。

ここでの回答に基づいて、グローバルブール変数を返す簡単な関数を作成しました。これは、後で使用できます。IEの確認は非常に簡単です。

var isIE;
(function() {
    var ua = window.navigator.userAgent,
        msie = ua.indexOf('MSIE '),
        trident = ua.indexOf('Trident/');

    isIE = (msie > -1 || trident > -1) ? true : false;
})();

if (isIE) {
    alert("I am an Internet Explorer!");
}

このようにして、ルックアップを1回実行するだけでよく、結果を変数に格納します。各関数呼び出しで結果をフェッチする必要はありません。(私が知る限り、ユーザーエージェントはDOMに関連していないため、ドキュメントがこのコードを実行する準備ができるのを待つ必要さえありません。)


2

jqueryバージョン> = 1.9を使用している場合は、これを試してください。

var browser;
jQuery.uaMatch = function (ua) {
    ua = ua.toLowerCase();

    var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
        /(webkit)[ \/]([\w.]+)/.exec(ua) ||
        /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
        /(msie) ([\w.]+)/.exec(ua) || 
        ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
       /(Trident)[\/]([\w.]+)/.exec(ua) || [];

    return {
        browser: match[1] || "",
        version: match[2] || "0"
    };
};
// Don't clobber any existing jQuery.browser in case it's different
if (!jQuery.browser) {
    matched = jQuery.uaMatch(navigator.userAgent);
    browser = {};

    if (matched.browser) {
        browser[matched.browser] = true;
        browser.version = matched.version;
    }

    // Chrome is Webkit, but Webkit is also Safari.
    if (browser.chrome) {
        browser.webkit = true;
    } else if (browser.webkit) {
        browser.safari = true;
    }

    jQuery.browser = browser;
}

使用している場合はjQueryのバージョン<1.9(jQueryの1.9で削除されました.browser $)が代わりに次のコードを使用します。

$('.myClass').on('click', function (event) {
    if ($.browser.msie) {
        alert($.browser.version);
    }
});

これをありがとう。残念ながら、まだバージョン1.7.2を使用しており、まだ変更できません。
user2571510 2013年

私の知る限り、これはトライデントエンジンに基づく新しいIEを考慮していません。
Bram Vanroy、2016

Tridentに基づく最新のIE向けに更新
Rohan Kumar

1

@SpiderCodeのソリューションはIE 11では機能しません。これは、特定の機能のためにブラウザー検出が必要なコードで今後使用した最良のソリューションです。

IE11はMSIEとしてレポートしなくなりました。この変更のリストによると、誤検出を回避することを意図しています。

IEを本当に知りたい場合にできることは、navigator.appNameが(テストされていない)などのNetscapeを返した場合に、ユーザーエージェントでTrident /文字列を検出することです。

この回答のおかげで

function isIE()
{
  var rv = -1;
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  else if (navigator.appName == 'Netscape')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv == -1 ? false: true;
}

1

以下、グーグルしながらエレガントな方法を見つけました---

/ detect IE
var IEversion = detectIE();

if (IEversion !== false) {
  document.getElementById('result').innerHTML = 'IE ' + IEversion;
} else {
  document.getElementById('result').innerHTML = 'NOT IE';
}

// add details to debug result
document.getElementById('details').innerHTML = window.navigator.userAgent;

/**
 * detect IE
 * returns version of IE or false, if browser is not Internet Explorer
 */
function detectIE() {
  var ua = window.navigator.userAgent;

  // Test values; Uncomment to check result …

  // IE 10
  // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';

  // IE 11
  // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';

  // IE 12 / Spartan
  // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';

  // Edge (IE 12+)
  // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';

  var msie = ua.indexOf('MSIE ');
  if (msie > 0) {
    // IE 10 or older => return version number
    return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
  }

  var trident = ua.indexOf('Trident/');
  if (trident > 0) {
    // IE 11 => return version number
    var rv = ua.indexOf('rv:');
    return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
  }

  var edge = ua.indexOf('Edge/');
  if (edge > 0) {
    // Edge (IE 12+) => return version number
    return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
  }

  // other browser
  return false;
}

1
これはまさに、CodePenでの私のペンからのコードでありこの質問に対する私の回答の一部です。;-)
マリオ

1
はい、私は同じを使用しましたが、スタックオーバーフローの人々はリンクを共有したくありません。ここで参照のリンクを更新します。素晴らしい作品マリオをありがとう。
Rameshwar Vyevhare、2016

1

SpiderCodeの回答を更新して、文字列「MSIE」が-1を返すが「Trident」と一致する問題を修正します。以前はNANを返していましたが、そのバージョンのIEでは11を返します。

   function msieversion() {
       var ua = window.navigator.userAgent;
       var msie = ua.indexOf("MSIE ");
       if (msie > -1) {
           return ua.substring(msie + 5, ua.indexOf(".", msie));
       } else if (navigator.userAgent.match(/Trident.*rv\:11\./)) {
           return 11;
       } else {
           return false;
       }
    }


0
function msieversion() {
var ua = window.navigator.userAgent;
console.log(ua);
var msie = ua.indexOf("MSIE ");

if (msie > -1 || navigator.userAgent.match(/Trident.*rv:11\./)) { 
    // If Internet Explorer, return version numbe
    // You can do what you want only in IE in here.
    var version_number=parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)));
    if (isNaN(version_number)) {
        var rv_index=ua.indexOf("rv:");
        version_number=parseInt(ua.substring(rv_index+3,ua.indexOf(".",rv_index)));
    }
    console.log(version_number);
} else {       
    //other browser   
    console.log('otherbrowser');
}
}

コンソールに結果が表示されるはずです。ChromeInspectを使用してください。


0

このコードをドキュメントレディ関数に配置しましたが、Internet Explorerでのみトリガーされます。Internet Explorer 11でテスト済み。

var ua = window.navigator.userAgent;
ms_ie = /MSIE|Trident/.test(ua);
if ( ms_ie ) {
    //Do internet explorer exclusive behaviour here
}

0

これはIE 11バージョン以下でのみ機能します。

var ie_version = parseInt(window.navigator.userAgent.substring(window.navigator.userAgent.indexOf("MSIE ") + 5, window.navigator.userAgent.indexOf(".", window.navigator.userAgent.indexOf("MSIE "))));

console.log("version number",ie_version);


0

Internet ExplorerまたはEdgeのバージョンを検出するJavaScript関数

function ieVersion(uaString) {
  uaString = uaString || navigator.userAgent;
  var match = /\b(MSIE |Trident.*?rv:|Edge\/)(\d+)/.exec(uaString);
  if (match) return parseInt(match[2])
}

0

ネクロマンシング。

ユーザーエージェント文字列に依存しないようにするには、いくつかのプロパティを確認します。

if (document.documentMode) 
{
    console.log('Hello Microsoft IE User!');
}

if (!document.documentMode && window.msWriteProfilerMark) {
    console.log('Hello Microsoft Edge User!');
}

if (document.documentMode || window.msWriteProfilerMark) 
{
    console.log('Hello Microsoft User!');
}

if (window.msWriteProfilerMark) 
{
    console.log('Hello Microsoft User in fewer characters!');
}

また、これは新しいChredge(アナハイム)を検出します。

function isEdg()
{ 

    for (var i = 0, u="Microsoft", l =u.length; i < navigator.plugins.length; i++)
    {
        if (navigator.plugins[i].name != null && navigator.plugins[i].name.substr(0, l) === u)
            return true;
    }

    return false;
}

そして、これはクロムを検出します:

function isChromium()
{ 

    for (var i = 0, u="Chromium", l =u.length; i < navigator.plugins.length; i++)
    {
        if (navigator.plugins[i].name != null && navigator.plugins[i].name.substr(0, l) === u)
            return true;
    }

    return false;
}

そして、このサファリ:

if(window.safari)
{
    console.log("Safari, yeah!");
}

-1

このようにしてみてください

if ($.browser.msie && $.browser.version == 8) {
    //my stuff

}

jQueryはこれを1.3で非推奨にし、1.9で完全に削除しました。
geca

-1

ここで役立つと思います

function checkIsIE() {
    var isIE = false;
    if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
        isIE = true;
    }
    if (isIE)  // If Internet Explorer, return version number
    {
        kendo.ui.Window.fn._keydown = function (originalFn) {
            var KEY_ESC = 27;
            return function (e) {
                if (e.which !== KEY_ESC) {
                    originalFn.call(this, e);
                }
            };
        }(kendo.ui.Window.fn._keydown);

        var windowBrowser = $("#windowBrowser").kendoWindow({
            modal: true,
            id: 'dialogBrowser',
            visible: false,
            width: "40%",
            title: "Thông báo",
            scrollable: false,
            resizable: false,
            deactivate: false,
            position: {
                top: 100,
                left: '30%'
            }
        }).data('kendoWindow');
        var html = '<br /><div style="width:100%;text-align:center"><p style="color:red;font-weight:bold">Please use the browser below to use the tool</p>';
        html += '<img src="/Scripts/IPTVClearFeePackage_Box/Images/firefox.png"/>';
        html += ' <img src="/Scripts/IPTVClearFeePackage_Box/Images/chrome.png" />';
        html += ' <img src="/Scripts/IPTVClearFeePackage_Box/Images/opera.png" />';
        html += '<hr /><form><input type="button" class="btn btn-danger" value="Đóng trình duyệt" onclick="window.close()"></form><div>';
        windowBrowser.content(html);
        windowBrowser.open();

        $("#windowBrowser").parent().find(".k-window-titlebar").remove();
    }
    else  // If another browser, return 0
    {
        return false;
    }
}

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.