Mam określone ścieżki kodu dla IE 10 i pozostałych wersji IE. Jeśli IE10 działa w trybie zgodności, wersja przeglądarki jest ustawiona na 7.0. Czy istnieje sposób na wykrycie, czy jest to IE 10, niezależnie od trybu standard/kompatybilność przy użyciu JavaScript/JQuery?Wykryj tryb zgodności IE10
Odpowiedz
wartość Trident w ciągu agenta użytkownika wskazuje rzeczywistą wersję prowadzony IG.
O ile oczywiście IE11 nie zmienia sposobu działania. – Matthew
Można to wykryć przy użyciu ciąg navigator.userAgent
np
„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 oznacza IE10
MSIE 7,0 oznacza kompatybilizację Tryb y
Więcej szczegółów: https://stackoverflow.com/a/5825518/255654
Dzięki, mam to ustalone. – ABC
Myślałem, że to była bardziej przejrzysta odpowiedź. –
Jeśli umieścisz go w widoku zgodności za pośrednictwem narzędzi programistycznych, wydaje się to prawdą. Jeśli zostanie on umieszczony w widoku zgodności z powodu ustawień widoku zgodności w menu Narzędzia (na przykład według nazwy domeny), wygląda na to, że używa normalnych standardów userAgent. –
To właśnie używam z JQuery .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
Wierzę, że twój kod ustawia tylko IsIE i wersję, jeśli tryb zgodności zostanie wykryty w ciągu znaków UA. Czy to jest zamierzone? – ifugu
To powinno działać wykrywanie trybu zgodności dla MSIE.
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 brakuje tryb zgodności 11
- 2. Jak wymusić tryb zgodności dla wszystkich wersji IE?
- 3. Program Internet Explorer automatycznie przełącza się w tryb zgodności (IE9 i IE10)
- 4. Wykryj tryb samolotowy na iOS
- 5. Jak mogę programowo wyłączyć tryb zgodności IE?
- 6. Wyłącz tryb zgodności IE 8 dla witryny
- 7. Problem ze zgodnością to IE10
- 8. Wykryj zmianę orientacji na IE10 Metro z JavaScriptem
- 9. IE10 - Ustawianie określonych trybów przeglądarki i dokumentów
- 10. Jak określić poprawną wersję przeglądarki, gdy włączony jest tryb zgodności
- 11. Kopie zapasowe administratora MySQL: "Tryb zgodności", co to dokładnie robi?
- 12. IE10 console.log nie działa
- 13. ie10 arkusz stylów
- 14. IE10 Wybieranie numeru skrzynki
- 15. setDragImage w IE10
- 16. IE10 przemalować/Przerysuj problem
- 17. Tryb zgodności IE9 dla witryn intranetowych ma nieprawidłowy ciąg User-Agent
- 18. Disqus sprawia, że IE8 przechodzi w tryb zgodności "Hard Assert". Jakieś poprawki?
- 19. Jak wyłączyć "tryb zgodności" w przeglądarce Internet Explorer 8 dla mojej witryny?
- 20. IE10 XML nie jest sformatowany wewnątrz iframe
- 21. Sprawdzanie zgodności wersji java
- 22. Testowanie zgodności przeglądarki
- 23. Tryb Tuareg i tryb Caml
- 24. IE8, widok zgodności na pliki lokalne?
- 25. Wymuszenie IE9 w trybie zgodności przy użyciu javascript
- 26. SCRIPT1010: Oczekiwano identyfikatora w IE10
- 27. PDF do umieszczenia w IE10
- 28. Uruchamianie jQuery na IE10/Win7
- 29. IE10 czyta warunkowe komentarze IE8
- 30. Wyłącz szczypanie, aby powiększyć IE10
cały sens trybie zgodności jest to, że ma być udając IE7, więc wszystkie normalne wykrywania wersja triki powiedzą "IE7". To powiedziawszy, istnieje kilka sztuczek, których możesz użyć, i kilka podobnych pytań tutaj, które mogą już dać odpowiedź ... Zobacz 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, itp. (Wiem, że są one dla IE8 i IE9, ale możliwe niektóre wskazówki mogą pomóc?) – Spudley
@Spudley, trójząb to sposób na wykrycie. – ABC
Ciekawe, dlaczego w ogóle chcesz wykryć tryb zgodności? Powinieneś być w stanie uniknąć sytuacji, w której użytkownicy pracują w trybie kompatybilnym, używając odpowiednich znaczników meta, więc nie wiem, dlaczego musiałbyś je wykryć. – Spudley