1. ホーム
  2. javascript

[解決済み] Internet Explorer(IE)やMicrosoft EdgeをJavaScriptで検出するにはどうすればよいですか?

2023-05-27 22:44:09

質問

Internet Explorer を検出する方法がたくさんあることはわかりました。

私の問題はこれです。私の HTML ドキュメントに、クリックすると、いかなる種類のインターネット エクスプローラーとも互換性のない JavaScript 関数を呼び出す領域があります。 IE が使用されているかどうかを検出し、もしそうなら、変数を true に設定したいのです。

問題は、私は Notepad++ からコードを書いているのですが、ブラウザで HTML コードを実行すると、IE を検出するためのメソッドがどれも機能しないことです。問題は、私がそれを Notepad++ から実行していることだと思います。IEを検出し、その変数に基づいてサイトのその部分を無効にすることができるようにする必要があります。私はこれを試しました。

var isIE10 = false;

if (navigator.userAgent.indexOf("MSIE 10") > -1) {
    // this is internet explorer 10
    isIE10 = true;
   window.alert(isIE10);
}

var isIE = (navigator.userAgent.indexOf("MSIE") != -1);

if(isIE){
    if(!isIE10){
    window.location = 'pages/core/ie.htm';
    }
}

と表示されるのですが、うまくいきません。Notepad++からIEを検出するにはどうしたらいいのでしょうか?HTMLのテストはそれで行っていますが、それで動作する方法が必要です。

編集

私は誰かがこれを重複としてマークしたことに気づきました、そしてそれは理解できます。私は明確でなかったと思います。 私はJQueryの回答を使用することはできませんので、これはバニラJSの回答を求めているので、重複ではありません。

編集#2

Microsoft Edgeブラウザを検出する方法もあるのでしょうか?

どのように解決するのですか?

なぜかわかりませんが、他の人が話しているように、userAgent に "Edge" が表示されないので、一部の人を助けるかもしれない別の方法を取る必要がありました。

navigator.userAgent を見る代わりに、IE<=10 か IE11 と Edge かを区別するために navigator.appName を見てみました。IE11 と Edge は "Netscape" の appName を使用し、他のすべての反復は "Microsoft Internet Explorer" を使用します。

ブラウザがIE11かEdgeであると判断したら、次にnavigator.appVersionに注目しました。IE11 の場合、この文字列はかなり長く、その中に多くの情報が含まれていることに気づきました。私は任意で「"Trident"」という単語を選びましたが、これはEdgeのnavigator.appVersionには絶対に含まれていません。この単語をテストすることで、2 つを区別することができました。

以下は、ユーザーがどの Internet Explorer を使用しているかを数値で返す関数です。Microsoft Edge の場合、12 という数字が返されます。

幸運と、これが役立つことを願っています

function Check_Version(){
    var rv = -1; // Return value assumes failure.

    if (navigator.appName == 'Microsoft Internet Explorer'){

       var ua = navigator.userAgent,
           re  = new RegExp("MSIE ([0-9]{1,}[\\.0-9]{0,})");

       if (re.exec(ua) !== null){
         rv = parseFloat( RegExp.$1 );
       }
    }
    else if(navigator.appName == "Netscape"){                       
       /// in IE 11 the navigator.appVersion says 'trident'
       /// in Edge the navigator.appVersion does not say trident
       if(navigator.appVersion.indexOf('Trident') === -1) rv = 12;
       else rv = 11;
    }       

    return rv;          
}