it-swarm.com.de

Erkennen IE Version (vor v9) in JavaScript

Ich möchte Benutzer unserer Website auf eine Fehlerseite bringen, wenn sie eine Version von Internet Explorer vor v9 verwenden. Es ist einfach nicht unsere Zeit und unser Geld wert, IE pre-v9 zu unterstützen. Benutzer aller anderen Nicht-IE-Browser sind in Ordnung und sollten nicht zurückgewiesen werden. Hier ist der vorgeschlagene Code:

if(navigator.appName.indexOf("Internet Explorer")!=-1){     //yeah, he's using IE
    var badBrowser=(
        navigator.appVersion.indexOf("MSIE 9")==-1 &&   //v9 is ok
        navigator.appVersion.indexOf("MSIE 1")==-1  //v10, 11, 12, etc. is fine too
    );

    if(badBrowser){
        // navigate to error page
    }
}

Wird dieser Code den Trick tun?

Um ein paar Kommentare abzulegen, die wahrscheinlich auf mich zukommen werden:

  1. Ja, ich weiß, dass Benutzer ihre useragent-Zeichenfolge schmieden können. Ich mache mir keine Sorgen.
  2. Ja, ich weiß, dass Programmierprofis es bevorzugen, Feature-Support anstelle des Browsertyps auszuliefern, aber ich denke nicht, dass dieser Ansatz in diesem Fall sinnvoll ist. Ich weiß bereits, dass alle (relevanten) Nicht-IE-Browser die Funktionen unterstützen, die ich benötige, und dass alle pre-v9 IE-Browser dies nicht tun. Eine Überprüfung der einzelnen Funktionen auf der gesamten Site wäre eine Verschwendung.
  3. Ja, ich weiß, dass jemand, der versucht, mit IE v1 (oder> = 20) auf die Website zuzugreifen, die Einstellung 'badBrowser' nicht auf "true" setzen und die Warnungsseite nicht ordnungsgemäß angezeigt wird. Das ist ein Risiko, das wir eingehen wollen.
  4. Ja, ich weiß, dass Microsoft "bedingte Kommentare" hat, die zur genauen Erkennung der Browserversion verwendet werden können. IE unterstützt ab IE 10 keine bedingten Kommentare mehr, was diesen Ansatz absolut nutzlos macht.

Alle anderen offensichtlichen Probleme, die Sie beachten sollten?

242
Chad Decker

Dies ist meine bevorzugte Methode. Es gibt maximale Kontrolle. (Hinweis: Bedingte Anweisungen werden nur in IE5 - 9 unterstützt.)

Richten Sie zuerst Ihre ie-Klassen korrekt ein

<!DOCTYPE html>
<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>    <html class="lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>    <html class="lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->    
<head>

Dann können Sie CSS nur verwenden, um Stilausnahmen zu machen, oder Sie können, wenn Sie möchten, einfaches JavaScript hinzufügen:

(function ($) {
    "use strict";

    // Detecting IE
    var oldIE;
    if ($('html').is('.lt-ie7, .lt-ie8, .lt-ie9')) {
        oldIE = true;
    }

    if (oldIE) {
        // Here's your JS for IE..
    } else {
        // ..And here's the full-fat code for everyone else
    }

}(jQuery));

Danke an Paul Irish .

351
Jezen Thomas

Gibt die Version von IE zurück, oder wenn nicht IE, wird false zurückgegeben

function isIE () {
  var myNav = navigator.userAgent.toLowerCase();
  return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false;
}

Beispiel:

if (isIE () == 8) {
 // IE8 code
} else {
 // Other versions IE or not IE
}

oder

if (isIE () && isIE () < 9) {
 // is IE version less than 9
} else {
 // is IE 9 and later or not IE
}

oder 

if (isIE()) {
 // is IE
} else {
 // Other browser
}
160
weroro

Wenn niemand anderes eine addEventLister- Methode hinzugefügt hat und Sie den richtigen Browsermodus verwenden, können Sie mit IE 8 oder weniger prüfen

if (window.attachEvent && !window.addEventListener) {
    // "bad" IE
}

Legacy Internet Explorer und attachEvent (MDN)

119
Andreas

Verwenden Sie bedingte Kommentare. Sie versuchen, Benutzer von IE <9 zu erkennen, und bedingte Kommentare funktionieren in diesen Browsern. In anderen Browsern (IE> = 10 und Nicht-IE) werden die Kommentare wie normale HTML-Kommentare behandelt.

Beispiel HTML:

<!--[if lt IE 9]>
WE DON'T LIKE YOUR BROWSER
<![endif]-->

Sie können dies auch nur mit Skript tun, wenn Sie Folgendes benötigen:

var div = document.createElement("div");
div.innerHTML = "<!--[if lt IE 9]><i></i><![endif]-->";
var isIeLessThan9 = (div.getElementsByTagName("i").length == 1);
if (isIeLessThan9) {
    alert("WE DON'T LIKE YOUR BROWSER");
}
113
Tim Down

So können Sie MSIE (v6 - v7 - v8 - v9 - v10 - v11) problemlos erkennen: 

if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
   // MSIE
}
55
EpokK

Hier ist der Weg, wie AngularJS prüft für IE

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

if (msie < 9) {
    // code for IE < 9
}
30
iurii

Um IE8 und älter zuverlässig zu filtern, können testing globale Objekte verwendet werden:

if (document.all && !document.addEventListener) {
    alert('IE8 or lower');
}
27
Beaudinn Greve

Diese Funktion gibt die Hauptversionsnummer IE als Ganzzahl oder undefined zurück, wenn der Browser nicht Internet Explorer ist. Dies ist wie bei allen Benutzeragentenlösungen anfällig für Benutzeragenten-Spoofing (seit Version 8 eine offizielle Funktion von IE).

function getIEVersion() {
    var match = navigator.userAgent.match(/(?:MSIE |Trident\/.*; rv:)(\d+)/);
    return match ? parseInt(match[1]) : undefined;
}
16
Owen

Erkennen Sie IE in JS mit bedingten Kommentaren

// ----------------------------------------------------------
// A short snippet for detecting versions of IE in JavaScript
// without resorting to user-agent sniffing
// ----------------------------------------------------------
// If you're not in IE (or IE version is less than 5) then:
//     ie === undefined
// If you're in IE (>=5) then you can determine which version:
//     ie === 7; // IE7
// Thus, to detect IE:
//     if (ie) {}
// And to detect the version:
//     ie === 6 // IE6
//     ie > 7 // IE8, IE9 ...
//     ie < 9 // Anything less than IE9
// ----------------------------------------------------------

// UPDATE: Now using Live NodeList idea from @jdalton

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]
    );

    return v > 4 ? v : undef;

}());
15
jKey

Die Erkennung der IE -Version mithilfe der Featureerkennung (IE6 +, Browser vor IE6 werden als 6 erkannt, gibt für Nicht-IE-Browser den Wert null zurück)

var ie = (function (){
    if (window.ActiveXObject === undefined) return null; //Not IE
    if (!window.XMLHttpRequest) return 6;
    if (!document.querySelector) return 7;
    if (!document.addEventListener) return 8;
    if (!window.atob) return 9;
    if (!document.__proto__) return 10;
    return 11;
})();

Edit: Ich habe ein Bower/Npm Repo für Ihre Bequemlichkeit erstellt: ie-Version

Update:

eine kompaktere Version kann in einer Zeile geschrieben werden als:

return window.ActiveXObject === undefined ? null : !window.XMLHttpRequest ? 6 : !document.querySelector ? 7 : !document.addEventListener ? 8 : !window.atob ? 9 : !document.__proto__ ? 10 : 11;
15
Gabriel Llamas

Das funktioniert für mich. Ich verwende es als Weiterleitung zu einer Seite, die erklärt, warum wir <IE9 nicht mögen und Links zu Browsern anbieten, die wir bevorzugen.

<!--[if lt IE 9]>
<meta http-equiv="refresh" content="0;URL=http://google.com">
<![endif]-->
12
iconMatrix

Ihr Code kann die Überprüfung durchführen. Wenn Sie jedoch darüber nachdenken, dass jemand versucht, über IE v1 oder> v19 auf Ihre Seite zuzugreifen, wird der Fehler nicht angezeigt, sollten Sie die Überprüfung mit einem Regex-Ausdruck wie diesem Code sicherer durchführen :

var userAgent = navigator.userAgent.toLowerCase();
// Test if the browser is IE and check the version number is lower than 9
if (/msie/.test(userAgent) && 
    parseFloat((userAgent.match(/.*(?:rv|ie)[\/: ](.+?)([ \);]|$)/) || [])[1]) < 9) {
  // Navigate to error page
}
10
Fong-Wan Chau

Bedingte Kommentare werden ab Version 10 in IE nicht mehr unterstützt, wie auf der Microsoft-Referenzseite angegeben.

var ieDetector = function() {
  var browser = { // browser object

      verIE: null,
      docModeIE: null,
      verIEtrue: null,
      verIE_ua: null

    },
    tmp;

  tmp = document.documentMode;
  try {
    document.documentMode = "";
  } catch (e) {};

  browser.isIE = typeof document.documentMode == "number" || eval("/*@[email protected]*/!1");
  try {
    document.documentMode = tmp;
  } catch (e) {};

  // We only let IE run this code.
  if (browser.isIE) {
    browser.verIE_ua =
      (/^(?:.*?[^a-zA-Z])??(?:MSIE|rv\s*\:)\s*(\d+\.?\d*)/i).test(navigator.userAgent || "") ?
      parseFloat(RegExp.$1, 10) : null;

    var e, verTrueFloat, x,
      obj = document.createElement("div"),

      CLASSID = [
        "{45EA75A0-A269-11D1-B5BF-0000F8051515}", // Internet Explorer Help
        "{3AF36230-A269-11D1-B5BF-0000F8051515}", // Offline Browsing Pack
        "{89820200-ECBD-11CF-8B85-00AA005B4383}"
      ];

    try {
      obj.style.behavior = "url(#default#clientcaps)"
    } catch (e) {};

    for (x = 0; x < CLASSID.length; x++) {
      try {
        browser.verIEtrue = obj.getComponentVersion(CLASSID[x], "componentid").replace(/,/g, ".");
      } catch (e) {};

      if (browser.verIEtrue) break;

    };
    verTrueFloat = parseFloat(browser.verIEtrue || "0", 10);
    browser.docModeIE = document.documentMode ||
      ((/back/i).test(document.compatMode || "") ? 5 : verTrueFloat) ||
      browser.verIE_ua;
    browser.verIE = verTrueFloat || browser.docModeIE;
  };

  return {
    isIE: browser.isIE,
    Version: browser.verIE
  };

}();

document.write('isIE: ' + ieDetector.isIE + "<br />");
document.write('IE Version Number: ' + ieDetector.Version);

dann benutze:

if((ieDetector.isIE) && (ieDetector.Version <= 9))
{

}
8
Arnold.Krumins

Für zB 10 und 11: 

Sie können js verwenden und eine Klasse in html hinzufügen, um den Standard der bedingten Kommentare zu erhalten :

  var ua = navigator.userAgent,
      doc = document.documentElement;

  if ((ua.match(/MSIE 10.0/i))) {
    doc.className = doc.className + " ie10";

  } else if((ua.match(/rv:11.0/i))){
    doc.className = doc.className + " ie11";
  }

Oder benutze einen lib wie bowser:

https://github.com/ded/bowser

Oder modernizr für die Featureerkennung: 

http://modernizr.com/

5
Liko

Um Internet Explorer 10 | 11 zu erkennen, können Sie dieses kleine Skript unmittelbar nach dem body-Tag verwenden:

In meinem Fall verwende ich die im Kopf geladene jQuery-Bibliothek. 

<!DOCTYPE HTML>
<html>
<head>
    <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
</head>
<body>
    <script>if (navigator.appVersion.indexOf('Trident/') != -1) $("body").addClass("ie10");</script>
</body>
</html>
3
Brian

Dies wurde zu Tode beantwortet, aber dies ist alles, was Sie brauchen.

!!navigator.userAgent.match(/msie\s[5-8]/i)
3
Timothy Perez
var Browser = new function () {
    var self = this;
    var nav = navigator.userAgent.toLowerCase();
    if (nav.indexOf('msie') != -1) {
        self.ie = {
            version: toFloat(nav.split('msie')[1])
        };
    };
};


if(Browser.ie && Browser.ie.version > 9)
{
    // do something
}
2
Berezh

Nach Microsoft ist folgendes die beste Lösung, es ist auch sehr einfach:

function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
    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 );
}
2
AHH

Das gefällt mir:

<script>
   function isIE () {
       var myNav = navigator.userAgent.toLowerCase();
       return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false;
   }    
   var ua = window.navigator.userAgent;
   //Internet Explorer | if | 9-11

   if (isIE () == 9) {
       alert("Shut down this junk! | IE 9");
   } else if (isIE () == 10){
       alert("Shut down this junk! | IE 10");
   } else if (ua.indexOf("Trident/7.0") > 0) {
       alert("Shut down this junk! | IE 11");
   }else{
       alert("Thank god it's not IE!");
   }

</script>
1

Dieser Ansatz zum Erkennen von IE kombiniert die Stärken und vermeidet die Schwächen der Antwort von jKey mithilfe von bedingten Kommentaren und Owens Antwort mit Benutzeragenten.

  • der Ansatz von jKey funktioniert bis zu Version 9 und ist in IE 8 & 9 gegen das Spoofing von Benutzeragenten geschützt.
  • Owens Ansatz kann bei IE 5 & 6 (Berichterstellung 7) versagen und ist anfällig für UA-Spoofing, er kann jedoch IE -Versionen> = 10 (jetzt auch 12, die Owens Antwort postieren) erkennen. 

    // ----------------------------------------------------------
    // A short snippet for detecting versions of IE
    // ----------------------------------------------------------
    // If you're not in IE (or IE version is less than 5) then:
    //     ie === undefined
    // Thus, to detect IE:
    //     if (ie) {}
    // And to detect the version:
    //     ie === 6 // IE6
    //     ie > 7 // IE8, IE9 ...
    // ----------------------------------------------------------
    var ie = (function(){
        var v = 3,
            div = document.createElement('div'),
            all = div.getElementsByTagName('i');
    
        while (
            div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
            all[0]
        );
        if (v <= 4) { // Check for IE>9 using user agent
            var match = navigator.userAgent.match(/(?:MSIE |Trident\/.*; rv:|Edge\/)(\d+)/);
            v = match ? parseInt(match[1]) : undefined;
        }
        return v;
    }());
    

Dies kann verwendet werden, um nützliche Klassen für Ihr Dokument festzulegen, die die Version IE enthalten:

    if (ie) {
        document.documentElement.className += ' ie' + ie;
        if (ie < 9)
            document.documentElement.className += ' ieLT9';
    }

Beachten Sie, dass der verwendete Kompatibilitätsmodus erkannt wird, wenn sich IE im Kompatibilitätsmodus befindet. Beachten Sie auch, dass die Version IE vor allem für ältere Versionen (<10) nützlich ist. Höhere Versionen sind standardkonformer und es ist wahrscheinlich besser, nach Funktionen zu suchen, beispielsweise mit modernizr.js.

1
jtbr

oder einfach

//   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: 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 isIE = navigator.userAgent.match(/MSIE|Trident|Edge/)
var IEVersion = ((navigator.userAgent.match(/(?:MSIE |Trident.*rv:|Edge\/)(\d+(\.\d+)?)/)) || []) [1]
1
Giacomo

Ich habe dafür einen bequemen Unterstrichmix gemacht.

_.isIE();        // Any version of IE?
_.isIE(9);       // IE 9?
_.isIE([7,8,9]); // IE 7, 8 or 9?

_.mixin({
  isIE: function(mixed) {
    if (_.isUndefined(mixed)) {
      mixed = [7, 8, 9, 10, 11];
    } else if (_.isNumber(mixed)) {
      mixed = [mixed];
    }
    for (var j = 0; j < mixed.length; j++) {
      var re;
      switch (mixed[j]) {
        case 11:
          re = /Trident.*rv\:11\./g;
          break;
        case 10:
          re = /MSIE\s10\./g;
          break;
        case 9:
          re = /MSIE\s9\./g;
          break;
        case 8:
          re = /MSIE\s8\./g;
          break;
        case 7:
          re = /MSIE\s7\./g;
          break;
      }

      if (!!window.navigator.userAgent.match(re)) {
        return true;
      }
    }

    return false;
  }
});

console.log(_.isIE());
console.log(_.isIE([7, 8, 9]));
console.log(_.isIE(11));
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

1
danrichards

Ich werde empfehlen, diesen Code nicht mehrmals zu schreiben. Ich würde empfehlen, dass Sie die Conditionizr-Bibliothek ( http://conditionizr.com/ ) verwenden, die für bestimmte IE - Versionen sowie für andere Browser, Betriebssysteme und sogar das Vorhandensein oder Nichtvorhandensein von Tests getestet werden kann von Retina-Displays.

Fügen Sie den Code nur für die spezifischen Tests hinzu, die Sie benötigen, und profitieren Sie auch von einer getesteten Bibliothek, die viele Iterationen durchlaufen hat (und die leicht zu aktualisieren ist, ohne Ihren Code zu beschädigen).

Es passt auch gut zu Modernizr, das alle Fälle abdeckt, in denen Sie besser auf eine bestimmte Funktion testen können als auf einen bestimmten Browser.

1
John Munsch

Der folgende Codepen identifiziert in allen Fällen die Version von IE (IE <= 9, IE10, IE11 und IE/Edge).

function detectIE() {
    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 (IE 12+) => return version number
        return parseInt(ua.substring(Edge + 5, ua.indexOf('.', Edge)), 10);
    }
    // other browser
    return false;
}

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

0
jeetaz

Es hat mir geholfen

function IsIE8Browser() {
  var rv = -1;
  var ua = navigator.userAgent;
  var re = new RegExp("Trident\/([0-9]{1,}[\.0-9]{0,})");
  if (re.exec(ua) != null) {
    rv = parseFloat(RegExp.$1);
  }
  return (rv == 4);
}
0
Pablo
// Detect ie <= 10
var ie = /MSIE ([0-9]+)/g.exec(window.navigator.userAgent)[1] || undefined;

console.log(ie);
// Return version ie or undefined if not ie or ie > 10
0
Liberateur

Das Erkennen von IE und seiner Versionen könnte nicht einfacher sein, und Sie benötigen lediglich ein wenig native/Vanilla-Javascript: 

var uA = navigator.userAgent;
var browser = null;
var ieVersion = null;

if (uA.indexOf('MSIE 6') >= 0) {
    browser = 'IE';
    ieVersion = 6;
}
if (uA.indexOf('MSIE 7') >= 0) {
    browser = 'IE';
    ieVersion = 7;
}
if (document.documentMode) { // as of IE8
    browser = 'IE';
    ieVersion = document.documentMode;
}

Und dies ist eine Möglichkeit, es zu benutzen: 

if (browser == 'IE' && ieVersion <= 9) 
    document.documentElement.className += ' ie9-';

Funktioniert in allen IE Versionen, einschließlich höherer Versionen in niedrigerer Kompatibilitätsansicht/Modus, und documentMode ist IE proprietär. 

0
Frank Conijn
if (!document.addEventListener) {
    // ie8
} else if (!window.btoa) {
    // ie9
}
// others
0
Bruce

Ich weiß, dass ich zu spät auf die Party gekommen bin, aber ich hatte eine einfache einzeilige Möglichkeit ausprobiert, um zu sagen, ob ein Browser IE ist und welche Version von 10 unten war. Ich habe dies nicht für Version 11 programmiert, daher ist möglicherweise eine kleine Änderung erforderlich.

Dies ist jedoch der Code. Er funktioniert als Objekt, das über eine Eigenschaft und eine Methode verfügt, und stützt sich auf die Objekterkennung, anstatt das Navigator-Objekt zu entfernen (das äußerst fehlerhaft ist, da es gefälscht werden kann).

var isIE = { browser:/*@[email protected]*/false, detectedVersion: function () { return (typeof window.atob !== "undefined") ? 10 : (typeof document.addEventListener !== "undefined") ? 9 : (typeof document.querySelector !== "undefined") ? 8 : (typeof window.XMLHttpRequest !== "undefined") ? 7 : (typeof document.compatMode !== "undefined") ? 6 : 5; } };

Die Verwendung ist isIE.browser, eine Eigenschaft, die einen booleschen Wert zurückgibt und auf bedingte Kommentare angewiesen ist. Die Methode isIE.detectedVersion() gibt eine Zahl zwischen 5 und 10 zurück bulliger als ein Liner und alles, was höher als 10 ist, und Sie befinden sich auf neuerem Territorium. Ich habe etwas über IE11 gelesen, der keine bedingten Kommentare unterstützt, aber ich bin nicht vollständig recherchiert, vielleicht für einen späteren Zeitpunkt.

Wie auch immer, und für einen Einzeiler werden die Grundlagen der IE - Browser- und Versionserkennung behandelt. Es ist alles andere als perfekt, aber es ist klein und leicht zu verändern.

Nur als Referenz, und wenn jemand Zweifel hat, wie dies tatsächlich umgesetzt werden soll, sollten die folgenden Bedingungen hilfreich sein. 

var isIE = { browser:/*@[email protected]*/false, detectedVersion: function () { return (typeof window.atob !== "undefined") ? 10 : (typeof document.addEventListener !== "undefined") ? 9 : (typeof document.querySelector !== "undefined") ? 8 : (typeof window.XMLHttpRequest !== "undefined") ? 7 : (typeof document.compatMode !== "undefined") ? 6 : 5; } };

/* testing IE */

if (isIE.browser) {
  alert("This is an IE browser, with a detected version of : " + isIE.detectedVersion());
}
0
Ric Paton

Das umfassendste JS-Skript, das ich für Versionen von IE finden konnte, ist http://www.pinlady.net/PluginDetect/IE/ . Die gesamte Bibliothek befindet sich unter http://www.pinlady.net/PluginDetect/Browsers/

Mit IE10 werden bedingte Anweisungen nicht mehr unterstützt.

Mit IE11 enthält der Benutzeragent keine MSIE mehr. Die Verwendung des Benutzeragenten ist auch nicht zuverlässig, da dies geändert werden kann.

Mit dem PluginDetect JS-Skript können Sie nach IE suchen und die genauen Versionen ermitteln, indem Sie sehr spezifischen und gut entwickelten Code verwenden, der auf bestimmte IE -Versionen abzielt. Dies ist sehr nützlich, wenn Sie genau wissen, mit welcher Browser-Version Sie arbeiten.

0
function getIEVersion(){
     if (/MSIE |Trident\//.test( navigator.userAgent )=== false) return -1;
    /**[IE <=9]*/
    var isIE9L = typeof ( window.attachEvent ) === 'function' && !( Object.prototype.toString.call( window.opera ) == '[object Opera]' ) ? true : false;
    var re;
    if(isIE9L){
        re = new RegExp( "MSIE ([0-9]{1,}[\.0-9]{0,})" );
        if(re.exec( navigator.userAgent ) !== null)
            return parseFloat( RegExp.$1 );
        return -1;
    }
    /**[/IE <=9]*/
    /** [IE >= 10]*/
    if(navigator.userAgent.indexOf( 'Trident/' ) > -1){
        re = new RegExp( "rv:([0-9]{1,}[\.0-9]{0,})" );
        if(re.exec( navigator.userAgent ) !== null)
            return parseFloat( RegExp.$1 );
        return -1;
    }
    /**[/IE >= 10]*/
    return -1;
};

Überprüfen Sie hier ==>

var ieVersion = getIEVersion();

if(ieVersion < 0){
    //Not IE
}
//A version of IE

Weitere Informationen zum Browsernavigator https://developer.mozilla.org/en-US/docs/Web/API/Window/navigator

0
RKTUXYN
var isIE9OrBelow = function()
{
   return /MSIE\s/.test(navigator.userAgent) && parseFloat(navigator.appVersion.split("MSIE")[1]) < 10;
}
0
xicooc

Kompliziert nicht so einfache Dinge. Verwenden Sie einfach einen einfachen und einfachen bedingten JScript-Kommentar. Es ist am schnellsten, da es Nicht-IE-Browsern zur Erkennung Null-Code hinzufügt und die Kompatibilität auf Versionen von IE zurückgeht, bevor HTML-bedingte Kommentare unterstützt wurden. Zusamenfassend,

var IE_version=(-1/*@cc_on,@[email protected]*/);

Hüten Sie sich vor Minifiers: Die meisten (wenn nicht alle) werden den bedingten Sonderkommentar für einen regulären Kommentar halten und ihn entfernen

Grundsätzlich setzt der obige Code den Wert von IE_version auf die Version von IE, die Sie verwenden, oder -1, wenn Sie keinen IE verwenden. Eine Live-Demonstration:

var IE_version=(-1/*@cc_on,@[email protected]*/);
if (IE_version!==-1){
    document.write("<h1>You are using Internet Explorer " + IE_version + "</h1>");
} else {
    document.write("<h1>You are not using a version of Internet Explorer less than 11</h1>");
}

Dies basiert auf der Tatsache, dass bedingte Kommentare nur in älteren Versionen von Internet Explorer sichtbar sind, und IE setzt @_jscript_version auf die Version des Browsers. Wenn Sie beispielsweise Internet Explorer 7 verwenden, wird @_jscript_version auf 7 gesetzt. Daher wird das nachbearbeitete Javascript, das ausgeführt wird, tatsächlich so aussehen:

var IE_version=(-1,7);

die wird bis 7 ausgewertet.

0
user7892745

Fenster läuft IE10 wird automatisch auf IE11 + aktualisiert und wird standardisiert W3C

Heute brauchen wir keine Unterstützung für IE8-

    <!DOCTYPE html>
    <!--[if lt IE 9]><html class="ie ie8"><![endif]-->
    <!--[if IE 9]><html class="ie ie9"><![endif]-->
    <!--[if (gt IE 9)|!(IE)]><!--><html><!--<![endif]-->
    <head>
        ...
        <!--[if lt IE 8]><meta http-equiv="Refresh" content="0;url=/error-browser.html"><![endif]--
        ...
    </head>
0
xicooc

Wenn Sie die Browserversion IE löschen müssen, können Sie dem folgenden Code folgen. Dieser Code funktioniert gut für die Versionen IE6 bis IE11

<!DOCTYPE html>
<html>
<body>

<p>Click on Try button to check IE Browser version.</p>

<button onclick="getInternetExplorerVersion()">Try it</button>

<p id="demo"></p>

<script>
function getInternetExplorerVersion() {
   var ua = window.navigator.userAgent;
        var msie = ua.indexOf("MSIE ");
        var rv = -1;

        if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))      // If Internet Explorer, return version number
        {               
            if (isNaN(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))))) {
                //For IE 11 >
                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);
                        alert(rv);
                    }
                }
                else {
                    alert('otherbrowser');
                }
            }
            else {
                //For < IE11
                alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
            }
            return false;
        }}
</script>

</body>
</html>
0
Nimesh