How can I detect Internet Explorer (IE) and Microsoft Edge using JavaScript?

前端 未结 13 868
小鲜肉
小鲜肉 2020-11-30 02:57

I\'ve looked around a lot, and I understand that there\'s a lot of ways to detect internet explorer.

My problem is this: I have an area on my HTML document, that when

相关标签:
13条回答
  • 2020-11-30 03:19

    I'm using UAParser https://github.com/faisalman/ua-parser-js

    var a = new UAParser();
    var name = a.getResult().browser.name;
    var version = a.getResult().browser.version;
    
    0 讨论(0)
  • 2020-11-30 03:20

    If we need to check Edge please go head with this

    if(navigator.userAgent.indexOf("Edge") > 1 ){

    //do something
    

    }

    0 讨论(0)
  • 2020-11-30 03:21

    Topic is a bit old, but since the scripts here detect Firefox as a False Positive (EDGE v12), here is the version I use:

    function isIEorEDGE(){
      if (navigator.appName == 'Microsoft Internet Explorer'){
        return true; // IE
      }
      else if(navigator.appName == "Netscape"){                       
         return navigator.userAgent.indexOf('.NET') > -1; // Only Edge uses .NET libraries
      }       
    
      return false;
    }
    

    which of course can be written in a more concise way:

    function isIEorEDGE(){
      return navigator.appName == 'Microsoft Internet Explorer' || (navigator.appName == "Netscape" && navigator.userAgent.indexOf('.NET') > -1);
    }
    
    0 讨论(0)
  • 2020-11-30 03:31

    This function worked perfectly for me. It detects Edge as well.

    Originally from this Codepen:

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

    /**
     * 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';
    
      // Edge 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 13
      // 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;
    }
    

    Then you can use if (detectIE()) { /* do IE stuff */ } in your code.

    0 讨论(0)
  • 2020-11-30 03:35

    Here is the latest correct way that I know of how to check for IE and 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');
    }
    

    Note that you don't need the extra var isIE10 in your code because it does very specific checks now.

    Also check out this page for the latest IE and Edge user agent strings because this answer may become outdated at some point: https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx

    0 讨论(0)
  • 2020-11-30 03:35
    // detect IE8 and above, and Edge
    if (document.documentMode || /Edge/.test(navigator.userAgent)) {
        ... do something
    }
    

    Explanation:

    document.documentMode
    

    An IE only property, first available in IE8.

    /Edge/
    

    A regular expression to search for the string 'Edge' - which we then test against the 'navigator.userAgent' property

    Update Mar 2020

    @Jam comments that the latest version of Edge now reports Edg as the user agent. So the check would be:

    if (document.documentMode || /Edge/.test(navigator.userAgent) || /Edg/.test(navigator.userAgent)) {
        ... do something
    }
    
    0 讨论(0)
提交回复
热议问题