5

Ich muss mit nur Javascript (keine Frameworks) erkennen, wenn der Browser IE10 trotz der Einstellung des Browser-Modus ist.Wie kann ich IE10 von JS erkennen, wenn der Browser IE9 ist?

Einige Kommentare: - Ich muss den Browser erkennen, es ist keine Option, nur Funktionen zu erkennen, da der Zweck ist, einen Browser-Fehler zu mindern. - Ich habe die üblichen Möglichkeiten (wie UA-String oder Feature-Erkennung) ohne Erfolg versucht, wenn ich den Browser-Modus auf IE9 wechseln jeden Aspekt, der in IE10 vorschlagen könnte einfach verschwindet.

+0

Was genau ist der "Browser-Fehler", den Sie zu mildern versuchen? – Ian

+0

Ich bin mir nicht sicher, ob das Ändern des Browsermodus die internen Variablen ändert, aber Sie könnten die bedingte Kompilierung verwenden und checken '@ _jscript_version' beginnt mit" 10 "(Hauptversion). – Ian

+0

In bestimmten Szenarien decken Flash-Teile nicht den gesamten Containerbereich ab, sie sind 1px schmaler. Können Sie Ihre Lösung ausarbeiten, es riecht nicht nach einer js Lösung. – gztomas

Antwort

12

Wenn Sie den Browser, den Sie gerade arbeiten erkennen wollen, hat IE eine Besonderheit, die so genannte bedingte Kompilierung - http://www.javascriptkit.com/javatutors/conditionalcompile.shtml

die Version zu erhalten, Sie @_jscript_version verwenden würde. So in Javascript, würde ich verwenden:

<script type="text/javascript"> 
    var isIE10 = false; 
    /*@cc_on 
     if (/^10/.test(@_jscript_version)) { 
      isIE10 = true; 
     } 
    @*/ 
    console.log(isIE10); 
</script> 

ich IE10 nicht haben, aber wenn sie mit IE9 testen, scheint es zu funktionieren. Wenn ich den Browser-Modus auf 7 oder 8 ändere, hat 10 die wahre Browser-JScript-Version (in meinem Fall bleibt es 9). Um die Liste der JScript-Versionen zu sehen, können Sie sie hier sehen - http://en.wikipedia.org/wiki/JScript#Versions. Es listet IE10 nicht auf, aber ich würde annehmen, dass es 10 ist. Vor IE9 verwendeten sie Zahlen, die nicht mit der Browserversion übereinstimmten, aber sie sind möglicherweise auf dem richtigen Weg seit 9. Sie müssen sehen, was @_jscript_version standardmäßig für 10 ist , aber ich nehme an, dass es mit "10" beginnt und möglicherweise eine Nebenversion hat.


UPDATE:

Um minification Kommentare zu vermeiden, können Sie so etwas wie: aus internen Werte von

var IE = (function() { 
    "use strict"; 

    var ret, isTheBrowser, 
     actualVersion, 
     jscriptMap, jscriptVersion; 

    isTheBrowser = false; 
    jscriptMap = { 
     "5.5": "5.5", 
     "5.6": "6", 
     "5.7": "7", 
     "5.8": "8", 
     "9": "9", 
     "10": "10" 
    }; 
    jscriptVersion = new Function("/*@cc_on return @_jscript_version; @*/")(); 

    if (jscriptVersion !== undefined) { 
     isTheBrowser = true; 
     actualVersion = jscriptMap[jscriptVersion]; 
    } 

    ret = { 
     isTheBrowser: isTheBrowser, 
     actualVersion: actualVersion 
    }; 

    return ret; 
}()); 

und Zugriff auf die Eigenschaften wie IE.isTheBrowser und IE.actualVersion (das heißt übersetzt: JScript-Versionen).

Verwandte Themen