Ich habe einige spezifische Codepfade für IE 10 und der Rest der IE-Versionen. Wenn IE10 im Kompatibilitätsmodus ausgeführt wird, wird die Browserversion auf 7.0 festgelegt. Gibt es eine Möglichkeit zu erkennen, ob es IE 10 ist, unabhängig vom Standard/Kompatibilitätsmodus mit JavaScript/JQuery?Detect IE10 Kompatibilitätsmodus
Antwort
Trident Wert in dem String-User-Agent zeigt die aktuelle Version des IE zu sein Lauf.
Es sei denn natürlich, IE11 ändert die Art und Weise, wie dies funktioniert. – Matthew
Sie können dies die navigator.userAgent
Zeichenfolge, zum Beispiel unter Verwendung erkennen
„Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/6.0; .NET4.0E;. NET4.0C; InfoPath.3; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Zune 4.7)“
Trident/6.0 bedeutet IE10
MSIE 7.0 bedeutet Kompatibilität y-Modus
Weitere Details: https://stackoverflow.com/a/5825518/255654
Danke, ich habe es herausgefunden. – ABC
Ich dachte, das wäre die klarere Antwort. –
Wenn Sie es in Kompatibilitätsansicht über Dev-Tools einfügen, scheint dies wahr. Wenn es aufgrund der Einstellungen der Kompatibilitätsansicht im Menü Extras (z. B. nach Domänennamen) in die Kompatibilitätsansicht versetzt wird, scheint es den normalen Standard userAgent zu verwenden. –
Das ist, was ich von JQuery verwenden .ready
$(document).ready(function() {
var iec = new IECompatibility();
alert('IsIE: ' + iec.IsIE + '\nVersion: ' + iec.Version + '\nCompatability On: ' + iec.IsOn);
});
function IECompatibility() {
var agentStr = navigator.userAgent;
this.IsIE = false;
this.IsOn = undefined; //defined only if IE
this.Version = undefined;
if (agentStr.indexOf("MSIE 7.0") > -1) {
this.IsIE = true;
this.IsOn = true;
if (agentStr.indexOf("Trident/6.0") > -1) {
this.Version = 'IE10';
} else if (agentStr.indexOf("Trident/5.0") > -1) {
this.Version = 'IE9';
} else if (agentStr.indexOf("Trident/4.0") > -1) {
this.Version = 'IE8';
} else {
this.IsOn = false; // compatability mimics 7, thus not on
this.Version = 'IE7';
}
} //IE 7
}
Ben Hobgood
Ich glaube, dass Ihr Code nur ISIE und Version setzt, wenn der Kompatibilitätsmodus in der UA-Zeichenfolge gefunden wird. Ist das beabsichtigt? – ifugu
arbeiten Dies sollte Kompatibilitätsmodus für MSIE erkennen.
iecheck.js
function trueOrFalse() {
return true;
}
function IeVersion() {
//Set defaults
var value = {
IsIE: false,
TrueVersion: 0,
ActingVersion: 0,
CompatibilityMode: false
};
//Try to find the Trident version number
var trident = navigator.userAgent.match(/Trident\/(\d+)/);
if (trident) {
value.IsIE = true;
//Convert from the Trident version number to the IE version number
value.TrueVersion = parseInt(trident[1], 10) + 4;
}
//Try to find the MSIE number
var msie = navigator.userAgent.match(/MSIE (\d+)/);
if (msie) {
value.IsIE = true;
//Find the IE version number from the user agent string
value.ActingVersion = parseInt(msie[1]);
} else {
//Must be IE 11 in "edge" mode
value.ActingVersion = value.TrueVersion;
}
//If we have both a Trident and MSIE version number, see if they're different
if (value.IsIE && value.TrueVersion > 0 && value.ActingVersion > 0) {
//In compatibility mode if the trident number doesn't match up with the MSIE number
value.CompatibilityMode = value.TrueVersion != value.ActingVersion;
}
return value;
}
iecheck.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Testing IE Compatibility Mode</title>
<script src="iecheck.js" type="text/javascript"></script>
</head>
<body>
<div id="results">Results: </div>
</br>
<script type="text/javascript">
var ie = IeVersion();
document.write("IsIE: " + ie.IsIE + "</br>");
document.write("TrueVersion: " + ie.TrueVersion + "</br>");
document.write("ActingVersion: " + ie.ActingVersion + "</br>");
document.write("CompatibilityMode: " + ie.CompatibilityMode + "</br>");
</script>
</body>
</html>
- 1. Internet Explorer 11 fehlender Kompatibilitätsmodus
- 2. TortoiseSVN Kompatibilitätsmodus
- 3. Wie entferne ich die Schaltfläche "X" aus den IE10-Textfeldern im Kompatibilitätsmodus?
- 4. Wie erzwinge ich den Kompatibilitätsmodus für alle IE-Versionen?
- 5. ie10 stylesheet
- 6. IE8 - Kompatibilitätsmodus Spreads Seite
- 7. Windows 10 Kompatibilitätsmodus | Registrierungsschlüssel
- 8. Run FMLECmd.exe ohne Kompatibilitätsmodus
- 9. IE8 zum Kompatibilitätsmodus gezwungen
- 10. Webbrowser läuft im Kompatibilitätsmodus
- 11. Stuck mit IE-Kompatibilitätsmodus
- 12. Kompatibilitätsmodus in IE8 mit VBScript
- 13. IE8 in IE7-Kompatibilitätsmodus erzwingen
- 14. PDF einbetten in IE10
- 15. Flexbox in IE10
- 16. IE10 console.log funktioniert nicht
- 17. getSelection() gebrochen in IE10
- 18. IE10 Repaint/Redraw Ausgabe
- 19. setDragImage in IE10
- 20. IE10 Tabellenlayout: behoben, wenn Colspan verwendet wird
- 21. CSS Flexbox nicht in IE10
- 22. Alternative zu lesenAsBinaryString für IE10
- 23. IE10 liest IE8 bedingte Kommentare
- 24. Pinch zum Zoomen deaktivieren IE10
- 25. Speicherlimit für indexeddb auf IE10
- 26. IE10 - CSS-Animation funktioniert nicht
- 27. IE10 SVG im CSS-Hintergrund
- 28. Kann IE7 in IE10 Browser
- 29. IE10 Hintergrundbild Artefakte auf Resize
- 30. Verhindern location.hash "Springen" in IE10
der ganze Sinn des Kompatibilitätsmodus ist, dass es angenommen hat IE7 sein werden vorgibt, so dass alle die normale Version Erkennung Tricks sagen "IE7". Das heißt, es gibt ein paar Tricks, die Sie verwenden können, und einige ähnliche Fragen hier, die möglicherweise bereits die Antwort geben ... Siehe http://stackoverflow.com/questions/1328963/detect-ie8-compatibility-mode, http: //stackoverflow.com/questions/5825385/javascript-can-i-detect-ie9-if-its-in-ie7-or-ie8-compatibility-mode, etc. (Ich weiß, dass diese für IE8 und IE9, aber möglicherweise sind einige der Tipps dort können helfen?) – Spudley
@Spudley, Dreizack ist der Weg zu erkennen, denke ich. – ABC
aus Interesse, warum müssen Sie überhaupt compat Modus erkennen? Sie sollten vermeiden können, dass Benutzer im Compat-Modus ausgeführt werden, indem Sie geeignete Meta-Tags verwenden, sodass ich nicht weiß, warum Sie sie erkennen müssen. – Spudley