2010-06-23 15 views
7

Tengo un problema de diseño que se debe a que la página que contiene se representa en modo de compatibilidad en IE8. ¿Hay alguna manera de detectar qué hace que IE8 ingrese al modo de compatibilidad para una página en particular?determinando por qué una página está siendo procesada en modo compatibilidad?

De acuerdo a los documentos de Microsoft, las siguientes condiciones pueden causar una página que se prestarán en modo de compatibilidad (http://msdn.microsoft.com/en-us/library/cc288325%28VS.85%29.aspx):

  • vista de compatibilidad está habilitada para la página.
  • La página se carga en la zona de Intranet e Internet Explorer 8 está configurada para páginas en la zona de Intranet en la Vista de compatibilidad.
  • Internet Explorer 8 está configurado para mostrar todos los sitios web en la Vista de compatibilidad.
  • Internet Explorer 8 está configurado para usar la Lista de vistas de compatibilidad, que especifica un conjunto de sitios web que siempre se muestran en la Vista de compatibilidad.
  • Las herramientas de desarrollador se utilizan para anular las configuraciones especificadas en la página web.
  • La página web encontró un error de diseño de página e Internet Explorer 8 está configurado para recuperarse automáticamente de dichos errores volviendo a abrir la página en la Vista de compatibilidad.

Después de revisar la página, he descartado las primeras posibilidades de que deba ser un error de diseño de página en la página. Me gustaría localizar este error

+0

En cuanto al error de diseño de página: La vista de compatibilidad se activa cuando el error de representación IE8 encuentra un "error irrecuperable". No estoy seguro de qué es esto. Pero sugiero que su página valide HTML (¿qué DOCTYPE tiene?), Intente eliminar CSS y JavaScript parte por parte, para que pueda descartar lo que está causando el problema, – Daniel

Respuesta

4

Compruebe si tiene <meta> etiquetas forzando IE en modo de compatibilidad.

Puede obligarlo a rendir como IE8 (completamente CSS 2.1 compatible) si lo desea:

<meta http-equiv="X-UA-Compatible" content="IE=8"/> 
+1

Tenga en cuenta que el 'X-UA-Compatible' meta tag debe ser la primera metaetiqueta en 'head' –

0

Asumiendo que tiene un elemento oculto con el ID de compat-advertencia:

Javascript w/jQuery :

$(function(){ 
    function showCompatWarning() { 
     $('#compat-warning') 
      .css('display','block') 
      .css('height','auto') 
      .show(); 
    } 
    var tridentOffset = navigator.appVersion.indexOf('Trident/'); 
    if (tridentOffset === -1) return; 
    var jscriptVersion = 0; 
    /*@cc_on @*/ 
    /*@if (@_jscript) jscriptVersion = @_jscript_version ; @*/; 
    /*@end @*/ 
    var tridentVersion = parseInt(navigator.appVersion.substr(tridentOffset+8),10); 
    var guessIEVersion = tridentVersion + 4; 
    if ((document.documentMode && jscriptVersion && jscriptVersion < 10 && jscriptVersion !== document.documentMode) || 
     (document.compatMode && document.compatMode === 'BackCompat') || 
     (document.documentMode && document.documentMode < 10 && document.documentMode != guessIEVersion)) 
     showCompatWarning(); 
}); 

Detección y advertencias, su primera y última línea de defensa contra compatibilidad infierno.

Cuestiones relacionadas