Holen Sie sich die IE-Version vom User-Agent
var ie = 0;
try { ie = navigator.userAgent.match( /(MSIE |Trident.*rv[ :])([0-9]+)/ )[ 2 ]; }
catch(e){}
So funktioniert es: Die User-Agent-Zeichenfolge für alle IE-Versionen enthält einen Teil "MSIE Space- Version " oder "Trident Other -Text- RV- Space-or-Colon- Version ". In diesem Wissen greifen wir auf die Versionsnummer eines String.match()
regulären Ausdrucks zurück. Ein try-catch
Block wird verwendet, um den Code zu verkürzen, andernfalls müssten wir die Array-Grenzen für Nicht-IE-Browser testen.
Hinweis: Der Benutzeragent kann gefälscht oder weggelassen werden, manchmal unbeabsichtigt, wenn der Benutzer seinen Browser auf einen "Kompatibilitätsmodus" eingestellt hat. Dies scheint jedoch in der Praxis kein großes Problem zu sein.
Holen Sie sich die IE-Version ohne den User-Agent
var d = document, w = window;
var ie = ( !!w.MSInputMethodContext ? 11 : !d.all ? 99 : w.atob ? 10 :
d.addEventListener ? 9 : d.querySelector ? 8 : w.XMLHttpRequest ? 7 :
d.compatMode ? 6 : w.attachEvent ? 5 : 1 );
So funktioniert es: Jede IE-Version bietet Unterstützung für zusätzliche Funktionen , die in früheren Versionen nicht vorhanden waren. So können wir die Funktionen von oben nach unten testen. Der Kürze halber wird hier jedoch eine ternäre Sequenz verwendet, if-then
und switch
Anweisungen würden genauso gut funktionieren. Die Variable ie
wird auf eine Ganzzahl 5-11 oder 1 für ältere oder 99 für neuere / Nicht-IE gesetzt. Sie können es auf 0 setzen, wenn Sie nur genau auf IE 1-11 testen möchten.
Hinweis: Die Objekterkennung kann unterbrochen werden, wenn Ihr Code auf einer Seite mit Skripten von Drittanbietern ausgeführt wird, die Polyfills für Dinge wie hinzufügen document.addEventListener
. In solchen Situationen ist der Benutzeragent die beste Option.
Ermitteln Sie, ob der Browser modern ist
Wenn Sie nur daran interessiert sind, ob ein Browser die meisten HTML 5- und CSS 3-Standards unterstützt oder nicht, können Sie davon ausgehen, dass IE 8 und niedriger die Hauptproblem-Apps bleiben. Wenn Sie auf window.getComputedStyle
testen, erhalten Sie auch eine ziemlich gute Mischung aus modernen Browsern (IE 9, FF 4, Chrome 11, Safari 5, Opera 11.5). IE 9 verbessert die Standardunterstützung erheblich, für native CSS-Animationen ist jedoch IE 10 erforderlich.
var isModernBrowser = ( !document.all || ( document.all && document.addEventListener ) );