首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用JavaScript检测Internet Explorer (IE)和Microsoft Edge?

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

Stack Overflow用户
提问于 2015-08-01 11:17:36
回答 11查看 162.3K关注 0票数 83

我看了很多,我知道有很多方法可以检测internet explorer。

我的问题是:我的HTML文档上有一个区域,当单击该区域时,会调用一个与任何类型的internet explorer都不兼容的JavaScript函数。我想要检测是否正在使用IE,如果是,将变量设置为true。

问题是,我的代码是用Notepad++编写的,当我在浏览器中运行代码时,检测IE的方法都不起作用。我认为问题在于我在Notepad++上运行它。我需要能够检测IE,以便基于变量,我可以禁用该网站的区域。我已经尝试过了:

代码语言:javascript
复制
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浏览器的方法?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2015-08-20 08:45:14

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

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

在我们确定浏览器是IE11或Edge之后,我查看了navigator.appVersion。我注意到在IE11中,字符串相当长,其中包含大量信息。我随心所欲地挑出了“三叉叉”这个词,这个词肯定不在Edge的navigator.appVersion中。通过测试这个单词,我可以区分这两个单词。

下面是一个函数,它将返回用户所在的Internet Explorer的数值。如果在Microsoft Edge上,则返回数字12。

祝你好运,我希望这对你有帮助!

代码语言:javascript
复制
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;          
}
票数 31
EN

Stack Overflow用户

发布于 2015-08-01 11:42:54

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

代码语言:javascript
复制
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和边缘用户代理字符串,因为此答案在某些时候可能会过时:https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx

票数 94
EN

Stack Overflow用户

发布于 2015-09-23 23:20:35

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

代码语言:javascript
复制
var a = new UAParser();
var name = a.getResult().browser.name;
var version = a.getResult().browser.version;
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31757852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档