Detectar el modo de compatibilidad IE10

Tengo algunas rutas de código específicas para IE 10 y el rest de las versiones de IE. Si IE10 se está ejecutando en modo de compatibilidad, la versión del navegador está configurada en 7.0. ¿Hay alguna manera de detectar si se trata de IE 10 independientemente del modo estándar / compatibilidad con JavaScript / JQuery?

Puede detectar esto usando la cadena navigator.userAgent , por ejemplo

“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 significa IE10

MSIE 7.0 significa modo de compatibilidad

Más detalles: https://stackoverflow.com/a/5825518/255654

Esto debería funcionar para detectar el modo de compatibilidad para 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

    Testing IE Compatibility Mode    
Results:

El valor Trident en la cadena de agente de usuario indica la versión real de IE que se está ejecutando.

Esto es lo que uso de 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