如何使用JavaScript检测Internet Explorer(IE)和Microsoft Edge?

我查了很多,我明白,有很多方法来检测Internet Explorer。 我的问题是这样的:我在HTML文档上有一个区域,点击时调用与任何类型的Internet Explorer不兼容的JavaScript函数。 我希望检测是否正在使用IE,如果是,请将变量设置为true。 问题是,我正在使用记事本++编写我的代码,并且当我在浏览器中运行HTML代码时,没有任何方法可以检测IE炒锅。 我认为问题在于我正在使用记事本++。 我需要能够检测IE,所以基于变量,我可以禁用该网站的该区域。 我试过这个:

/* Write JavaScript here */
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';
    }
}

但它不起作用。 我如何检测IE记事本++? 这就是我测试HTML的原因,但我需要一种可以在网站上使用的方法。 帮帮我!

编辑

我注意到有人将此标记为重复,这是可以理解的。 我想我不清楚。 我不能使用JQuery的答案,所以这不是重复的,因为我要求一个香草JS答案。

编辑#2还有一种方法来检测边缘浏览器?


我不知道为什么,但是我没有像其他人所说的那样在userAgent中看到“边缘”,所以我不得不采取另一条路线来帮助一些人。

我没有看navigator.userAgent,而是看着navigator.appName来区分它是IE <= 10还是IE11和Edge。 IE11和Edge使用“Netscape”的appName,而其他所有迭代都使用“Microsoft Internet Explorer”。

在确定浏览器是IE11或Edge之后,我查看navigator.appVersion。 我注意到在IE11中,字符串很长,其中有很多信息。 我随意挑选了“三叉戟”这个词,它绝对不在导航器的边缘.app版本中。 测试这个词让我能够区分这两个词。

下面是一个函数,它将返回用户所在的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;          
}

以下是我知道如何检查IE和Edge的最新正确方法:

if (/MSIE 10/i.test(navigator.userAgent)) {
   // This is internet explorer 10
   window.alert('isIE10');
}

if (/MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent)) {
    // This is internet explorer 9 or 11
    window.location = 'pages/core/ie.htm';
}

if (/Edge/d./i.test(navigator.userAgent)){
   // This is Microsoft Edge
   window.alert('Microsoft Edge');
}

请注意,您的代码中不需要额外的var isIE10,因为它现在执行了非常具体的检查。

还请查看此页面以获取最新的IE和Edge用户代理字符串,因为此答案在某些时候可能会过时:https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29。 ASPX


我正在使用UAParser https://github.com/faisalman/ua-parser-js

var a = new UAParser();
var name = a.getResult().browser.name;
var version = a.getResult().browser.version;
链接地址: http://www.djcxy.com/p/36449.html

上一篇: How can I detect Internet Explorer (IE) and Microsoft Edge using JavaScript?

下一篇: EMBED vs. OBJECT