2012-01-25 8 views
32

Tengo una aplicación que bajo algunas circunstancias hace que IE8 al móvil el mensaje de compatibilidad y volver a cargar en el modo compat:¿Qué cosas específicas hacen que IE8 active el modo de compatibilidad?

causado problemas en la visualización de Internet Explorer para actualizar la página web utilizando vista de compatibilidad

Esto es raro, y no ocurre debido a las metaetiquetas, hasta donde puedo decir. Ocurre como una respuesta a la acción del usuario que altera el DOM. Este es el mismo problema que: https://superuser.com/questions/215281/how-do-i-stop-i-e-jumping-into-compatability-view, pero mi pregunta es: qué tipo de cosas causan esto, como una ayuda para solucionarlo.

Dicho de otra forma, vea este sitio thesitewizard.com, donde una tercera causa de modo de compatibilidad en IE8 se describe como:

y, en ocasiones, por alguna otra razón inexplicable, indocumentado, en páginas que son validado como compatible con los estándares (o, al menos, lo hace esto en Release Candidate 1).

Y la pregunta es: ¿Qué razones insondables e indocumentadas?

+0

Nunca he visto una página HTML Validated "saltar" a la vista de compatibilidad. Pero, ¿cómo diablos puede alguien ayudarte sin ver tu aplicación? De lo contrario, las respuestas aquí serán simplemente una cadena aleatoria de conjeturas. – Sparky

+2

Consulte el título de la pregunta. Estoy buscando qué tipo de cosas causan esto, para ayudar a guiar la depuración. En cuanto a no verlo, haga clic en el enlace de superusuario en la pregunta, hay una captura de pantalla de la misma. – mtyson

+0

Leo el título y entiendo lo que está buscando. Sin embargo, es probable que se cierre una pregunta que no puede conducir a una respuesta o solución correcta específica. – Sparky

Respuesta

7

Después de una larga sesión de depuración (el uso de alertas de la vieja escuela para identificar lo que estaba fallando dónde), esta línea aparentemente innocous de manipulación del DOM fue el culpable:

document.getElementById("literal"+varValue).style.display = "none"; 

No había ningún error aquí, y el elemento era aparentemente encontrado (es decir, este no es un puntero nulo de variedad de jardín).

Esta es una aplicación a gran escala, y hay muchas cosas sucediendo alrededor de este código. Me cambié a la siguiente, y esto aparentemente ha impedido el tema:

setTimeout(function(){ 
      var layoutEl = document.getElementById("literal"+varValue); 
      if (layoutEl) 
       layoutEl.style.display = "none"; 
     },10) 
+2

También para mí, intentar ocultar un elemento específico provocó que IE8 actualizara la página usando la Vista de compatibilidad. Estoy usando jQuery, así que usando [.hide()] (http://api.jquery.com/hide) y haciendo uso de [duration] (http://api.jquery.com/hide/#hide -duration-complete) opción hizo el truco, por ejemplo '$ ('# id'). hide (1)'. – WynandB

5

El siguiente contenido proviene de un artículo de MSDN "Controlling default rendering".


Tenga en cuenta que ciertas condiciones, como las enumeradas aquí, pueden obligar a Internet Explorer a mostrar páginas en un modo de compatibilidad de documentos diferente al especificado en la página web.

  • La vista de compatibilidad está habilitada para la página.
  • La página se carga en la zona de Intranet e Internet Explorer está configurado para usar la Vista de compatibilidad para páginas cargadas desde la zona de Internet.
  • La página se carga desde el sistema de archivos local del usuario (lo que significa que la página se carga en la zona Intranet) e Internet Explorer está configurado para usar la Vista de compatibilidad para páginas cargadas desde la zona de Internet.
  • Internet Explorer está configurado para mostrar todos los sitios web en la Vista de compatibilidad.
  • Internet Explorer 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 está configurado para recuperarse automáticamente de dichos errores al volver a abrir la página en la Vista de compatibilidad.
  • La página contiene una marca de la Web que ordena que se cargue en una zona en particular.

Estos enlaces proporcionan información adicional que describe cómo Internet Explorer determina el modo de documento apropiado para una página web:

5

Te conozco allready tiene su respuesta, pero hoy he estado buscando también lo que fue causa ng IE8 para activar el modo de compatibilidad. Busqué código JavaScript, CSS (: en primer lugar,: pasado, etc) pero parecía haber cierta estilo en línea:

max-height en combinación con desbordamiento ..

Así que esto (también) desencadena la compatibilidad el modo en IE8:

style="overflow:scroll;max-height:200px;" 

Y esto no es así, por lo que resolvió mi problema:

style="overflow:scroll;height:200px;" 

Editar: Creo que esto está relacionado : IE8 overflow:auto with max-height

+0

Gracias - no olvides votar la pregunta si crees que es buena – mtyson

+0

Quité los elementos con desbordamiento en una página que se ve obligada a cargar en la vista de compatibilidad, y la página se carga normalmente. Problema encontrado. – Pete

2

Sé que esta es una vieja pregunta, pero pensé que agregaría algo que acabo de encontrar. Estaba teniendo un problema donde el modo de compatibilidad estaba siendo forzado y no pude rastrear la fuente. Saqué manualmente la página del modo de compatibilidad y noté que algunos caracteres no aparecían. Se terminó siendo una lista con viñetas que utilizaba un carácter personalizado en un elemento seudo:

li:before { 
    content: '\25B6'; 
} 

como una solución rápida, terminé simplemente sobrescribir esto para decir, menos de 9:

.lt-ie9 li:before { 
    content: ''; 
} 

This article me dio la idea de buscar personajes mal manejados. Espero que esto ayude a alguien si tropiezan con un problema similar.

Cuestiones relacionadas