2010-09-16 15 views
196

Acabo de instalar IE9 beta y en un sitio específico que he creado (HTML5) IE9 salta al modo de compatibilidad a menos que le indique manualmente que no lo haga. He intentado eliminar varias partes del sitio web pero no hay cambios. Incluye eliminar todos los CSS. En otro sitio web mío, todo va bien.¿Por qué IE9 cambia al modo de compatibilidad en mi sitio web?

Además, no lo configure manualmente porque entonces IE9 recuerda la configuración del usuario y no puede volver a convertirla en automática (o al menos no he encontrado cómo, ni siquiera a través de la caché de navegación y vaciado)

De todos modos. El sitio en el que salta a modo de compatibilidad: http://alliancesatwar.com/guide/
Uno cuando tenga como resultado correcto: http://geuze.name/basement/ (no puedo publicar más de 1 hipervínculo)

ambos utilizan el mismo doctype y todo. Esos sitios tienen mucho en común (aparte de la apariencia) usando la misma plantilla básica (codificación, etiquetas meta, doctype y la misma javascript)

¡Sería genial si alguien tiene una respuesta para mí! Un sitio web HTML5 que se renderiza en IE7-mode es bastante ... cojo.

+5

Por favor, explique: "salta al modo de compatibilidad"? Si ve la página actualizar y un globo que dice que IE ha actualizado esta página en la Vista de compatibilidad debido a un problema, esto significa que ha encontrado un error de IE llamado "afirmación difícil" que es similar a un bloqueo en el motor de representación . Estamos interesados ​​en encontrar y solucionar esto; por favor presente un error en http://connect.microsoft.com/ie. ¡Gracias! – EricLaw

Respuesta

261

Funciona en IE9 documentMode para mí.

Sin X-UA-Compatible encabezado/meta de establecer un documentMode explícita, que obtendrá un modo basado en:

  • si el usuario ha hecho clic en el botón ‘Vista de compatibilidad’ en ese dominio antes;
  • quizás también si esto ha sucedido automáticamente debido a algún otro contenido en el sitio que hace que el renderizador de IE8/9 se bloquee y vuelva al viejo renderizador;
  • si el usuario ha optado por poner todos los sitios en vista de compatibilidad de forma predeterminada;
  • si IE cree que el sitio está en su intranet y por lo tanto se predetermina a la vista de compatibilidad;
  • si el sitio en cuestión está en la propia lista de sitios web de Microsoft que requieren vista de compatibilidad.

Puede cambiar esta configuración desde 'Herramientas -> Configuración de vista de compatibilidad' desde el menú IE. Por supuesto, ese menú ahora está escondido a escondidas, por lo que no lo verá hasta que presione Alt.

Como autor del sitio, si está seguro de que su sitio cumple con los estándares (rinde bien en otros navegadores, y utiliza la función de detectores para decidir qué soluciones navegador usar), se sugiere emplear:

<meta http-equiv="X-UA-Compatible" content="IE=Edge"/> 

o la cabecera HTTP:

X-UA-Compatible: IE=Edge 

para obtener la última versión de IE renderizador lo está en uso.

+79

Nota importante: si IE 9 está configurado para mostrar siempre sitios de Intranet en modo compatibilidad, ni la metaetiqueta ni el encabezado HTTP anularán ese. – Jacob

+29

Como menciona Jacob, IE puede mostrar de forma predeterminada todos los sitios locales/intranet para estar en modo compat. Presiona alt -> Configuración de la vista de compatibilidad de herramientas, y asegúrate de que no tienes la casilla marcada. –

+29

La metaetiqueta solo funcionó para mí cuando la puse justo después de (consulte también la respuesta a continuación). Cuando lo puse más abajo dentro del elemento , no funcionó (aún tengo la página rasgada). –

22

Para forzar IE para rendir en las normas de modo que puedes usar IE9

<meta http-equiv="X-UA-Compatible" content="IE=edge"> 

Algunas condiciones pueden causar IE9 para saltar hacia abajo en los modos de compatibilidad. Por defecto, esto puede ocurrir en sitios de intranet.

+0

Funciona en el otro sitio web. Entonces eso no debería ser. Además, esa metaetiqueta es mala, ya que tendría que actualizarla manualmente cada vez que hay una nueva versión de IE. –

+2

Lo siento, no puedo solucionar tu problema. Sin embargo, he editado mi respuesta para usar 'IE = edge' en su lugar, que invoca el uso del último motor disponible, siempre. –

+0

Su suposición es incorrecta. Las demostraciones especifican X-UA-Compatible para evitar que IE muestre el botón Vista de compatibilidad, ya que si el usuario lo presiona, el contenido del sitio no funcionaría correctamente. – EricLaw

0

se ve bien para mí:

alt text

Usted está seguro de que no lo hizo en la configuración global o algo? Esta es una instalación limpia de la versión beta en Windows 7. Las herramientas del desarrollador informan que la página está configurada por defecto en el modo estándar IE9.

+0

Tuve más de 1 informe de este error. Aunque tal vez tiene que ver con el directorio base (http://alliancesatwar.com/) que también renderiza todos los subdirectores en modo compatibilidad. Pero luego tengo la pregunta, ¿qué en la raíz del sitio web hace que IE renderice el sitio web en modo compatibilidad? Entonces, tal vez al menos esta guía esté codificada correctamente. Eso espero entonces. –

+0

@Rene Extraño, acabo de reproducirlo, haciendo clic en el enlace de la Guía desde la página de inicio. Pero esto solo sucedió una vez, y después de algunos intentos aún tengo que reproducir esto, solo una vez, solo –

33

puse

<meta http-equiv="X-UA-Compatible" content="IE=Edge"/> 

primera hora después de

<head> 

(lo leí en alguna parte, no puedo recordar)

No podía creer que lo hizo el trabajo !!

+0

Tienes que cerrar la pestaña y abrir una nueva pestaña, ¿lo intentaste? – Zeb

+1

Dijo "no" no ";") –

+14

+1, ** esta es una nota muy valiosa **. Si tiene '

1

El sitio en http://www.HTML-5.com/index.html tiene la metaetiqueta X-UA-Compatible pero sigue en la Vista de compatibilidad como se indica mediante el icono "página rasgada" en la barra de direcciones. ¿Cómo se obtiene la opción de menú para forzar IE 9 (Versión final 9.0.8112.16421) para representar una página en el modo de estándares? Traté de hacer clic con el botón derecho en ese icono de página rasgada, así como en el truco de la tecla "Alt" para mostrar las opciones de menú adicionales mencionadas por René Geuze, pero esas no funcionaron.

+4

Elimina el comentario condicional de IE alrededor del meta.Está sirviendo la página como 'application/xhtml + xml', por lo que se utilizan reglas de análisis XML; XML no admite comentarios condicionales. En cualquier caso, no tiene ningún sentido; el navegador debe elegir un modo * antes de * que pueda decidir qué comentarios condicionales interpretar. – bobince

0

Hace poco tuvieron que resolver este problema y esto es lo que hice:

En primer lugar, esta solución está alrededor de ajuste del Servidor Apache.

Segunda pensar principal es que hay un error en el IE9 lo que significa que la etiqueta meta no va a funcionar, en lugar de esta solución probar este

  • hallazgo/abrir su httpd.conf
  • uncomment/o añadir la siguiente línea

    LoadModule headers_module modules/mod_headers.so 
    
  • añadir las siguientes líneas

    <IfModule headers_module> 
        Header set X-UA-Compatible: IE=EmulateIE8 
    </IfModule> 
    
  • Guardar/reiniciar el servidor Apache,

  • de exploración para su página con IE9, utilizar herramientas como wireshark o fiddler o utilizar herramientas de desarrollo de IE para comprobar la cabecera está ahí
6

que he publicado este Comente sobre un hilo separado de StackOverflow, pero pensó que valía la pena repetirlo aquí:

Para nuestra aplicación ASP.NET interna, agregando la etiqueta "Compatible con X-UA" en la página web, en el archivo web.config o en el código subyacente no hizo absolutamente ninguna diferencia.

El única cosa que trabajó para nosotros fue a apagar manualmente esta configuración en Internet Explorer 8:

enter image description here

(Suspiro.)

Este problema sólo parece suceder con IE8 & IE9 en sitios de intranet Los sitios web externos funcionarán bien y usarán la versión correcta de IE8/9, pero para los sitios web internos, IE9 decide de repente que es realmente IE7 y no tiene ningún soporte HTML 5.

No, yo tampoco entiendo muy bien esta lógica.

Mi solución reacios ha sido prueba si el navegador tiene HTML 5 apoyo (mediante la creación de un lienzo, y probar si es válido), y la visualización de este mensaje al usuario si no es válido:

enter image description here

No es especialmente fácil de usar, pero hacer que el usuario desactive esta molesta configuración parece ser la única forma de permitirles ejecutar correctamente las aplicaciones web HTML 5.

O haga que los usuarios usen Chrome. ;-)

1

Como un lado en los sitios web más modernos, si está utilizando declaraciones condicionales en su etiqueta html según el estándar, esto hará que, por alguna razón, ie9 pase al modo de compatibilidad predeterminado. La solución aquí es mover sus declaraciones condicionales fuera de la etiqueta html y agregarlas a la etiqueta corporal, es decir, fuera de la sección principal. De esa forma, aún puede usar esas clases en su hoja de estilos para apuntar a navegadores más antiguos.

Cuestiones relacionadas