gratis - habilitar javascript en chrome en windows
IE11 detecta si la vista de compatibilidad está activada a través de javascript (7)
Agregue esto al archivo web.config y la aplicación sobrescribirá la configuración del usuario.
<configuration>
...
<system.webServer>
...
<httpProtocol>
<customHeaders>
<clear/>
<add name="X-UA-Compatible" value="IE=8; IE=9; IE=EDGE" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
...
</configuration>
Coloque la etiqueta "system.webServer" al final de su archivo web.config justo antes de la etiqueta de "configuración" de cierre. Además, puede agregar la etiqueta compatible con X-UA en IIS en su servidor web seleccionando su sitio web y haciendo clic en el icono Encabezados de respuesta HTTP.
¿Alguien sabe cómo verificar si el modo de compatibilidad con IE 11 está activado cuando estoy en un sitio web a través de JavaScript?
Agregué la url a la configuración de vista de compatibilidad de lista. Pero cuando lo hago
navigator.userAgent
en herramientas de desarrollo, devuelve
Mozilla / 5.0 (Windows NT 6.3; WOW64; Trident / 7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; InfoPath.3; rv : 11.0) como Gecko
Mirando el sitio web de microsoft ( http://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx ), dice
Los tokens compatibles ("compatibles") y del navegador ("MSIE") se han eliminado.
Cualquier ayuda para detectar si una página está usando la vista de compatibilidad a través de javascript sería realmente útil. Gracias por adelantado.
Escribí una función de JavaScript, ie-truth , para hacer precisamente esto. La forma en que funciona es que en IE 11 si el modo de compatibilidad está activado, la cadena User Agent contendrá el número de versión de Trident para IE 11 (7.0), así como el número de versión de MSIE para una versión anterior de IE (como 7.0 para IE). 7). Esto también se aplica al modo de compatibilidad en versiones anteriores de IE.
Recomendaría que uno utilice la detección de características en lugar de consultar indirectamente la versión del navegador. Entonces, por ejemplo, si necesita la función de API de historial de HTML 5, haga algo como:
if (window.history && window.history.pushState) {
console.log(''This is a SUPPORTED browser'');
} else {
console.log(''NO! You require a browser that does X, please try installing ...'');
}
Según el artículo de http://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx del Libro de recetas de compatibilidad de IE , hay una forma de saber que el modo de compatibilidad está habilitado, pero solo cuando la cadena de agente de usuario coopera.
Específicamente, si el token del navegador dice MSIE 7.0
y el token Trident/7.0
dice Trident/7.0
, eso es una indicación bastante clara. Aún así, los cambios en la cadena de UA desde IE11 RTM muestran que no puede, y no debe, confiar en ella como un recurso predecible en futuras versiones.
Para obtener más información sobre los tokens individuales, consulte el tema Comprender las cadenas de usuario-agente . (No es totalmente actual, pero lo que hay parece ser relevante para sus intereses).
Espero que esto ayude...
-- Lanza
Una solución confiable que puede edit que funciona para Internet Explorer 8 a 11 (necesita código adicional para ser compatible con <IE8).
Efectos secundarios desagradables (solo si IE <11 o documentMode <11 - ouch):
- Esto causará problemas con
//@ sourceMappingURL=xx.js
(por ejemplo, en jQuery <1.11, u otras bibliotecas que no se hayan actualizado al formato//#
más reciente). - Al parecer, @cc_on ralentiza drásticamente la evaluación de js (con respecto a Paul Irish, que sabe lo que hace).
La razón básica por la que funciona es que:
var ieRealVersion = Function(''return /*@cc_on @_jscript_version@*/;'')();
devuelve la versión real de IE independientemente del modo de compatibilidad. Notas:
- ieRealVersion no está definido para IE11 en modo IE11, pero document.documentMode == 11 en ese caso.
- ieRealVersion es 5.8 para IE8.
- ieRealVersion es 5.7 para IE7, y también 5.7 para IE6 SP3. Sin embargo, documentMode no está definido, por lo que necesita un código adicional para detectar el navegador real (bastante trivial, pero ya no soy compatible con IE6 / 7, así que no me he molestado en codificar eso).
- Esta es una forma confiable de detectar Internet Explorer 6-10 que he usado durante muchos años sin problemas (pero que ha causado problemas a otros debido a @cc_on).
Una solución simple, inténtalo en la consola:
if (typeof(window.getSelection) == "undefined") {
alert("Unsupported browser!");
} else {
alert("Supported browser");
}
Detectará cualquier IE menos que IE9 (incluida la vista de compatibilidad). También detectaría Chrome 4-14 según caniuse.
IE 6-8: admite eventos de selección, pero no window.getSelection () Ref: https://caniuse.com/#feat=selection-api
Resuelto
Mientras buscaba una respuesta a esta pregunta, encontré esta solución de Nenad Bulatovic en otro hilo, pero su respuesta no estaba marcada como la respuesta correcta. Probé esto en IE11 y bajé de categoría a IE5 y descubrí que funciona para IE7-IE11, lo cual es genial. Quería compartirlo aquí en caso de que alguien más lo encuentre útil.
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>