¿Por qué Internet Explorer 11 no respeta los comentarios condicionales incluso al emular el modo de documento de Internet Explorer 8?

110

Estoy usando las nuevas herramientas para desarrolladores de Internet Explorer 11 para cambiar el modo de documento a "8", pero los comentarios condicionales aún se ignoran, es decir, no se analizan correctamente y se comportan como comentarios normales. Por lo tanto, el navegador no solicita / carga ningún archivo referenciado dentro del comentario condicional.

¿Por qué pasó esto? ¿Es un error?

Si cree que este es un error que debe corregirse, ingrese y diga que usted también puede reproducirlo en el informe de error de Microsoft que se informa para este problema:
Los comentarios condicionales no funcionan al emular modos de documento a través de F12 Developer Herramientas .

Actualización: se informó que este problema se solucionó en el informe de error mencionado.

thasmo
fuente
18
¡Haciéndome la misma pregunta! Sé que dejaron caer los comentarios condicionales en IE10, pero en mi humilde opinión, el emulador debería considerarlos al probar navegadores más antiguos.
Alexander Rechsteiner
12
De hecho, eso hace que la función sea inutilizable.
thasmo
3
La verdadera pregunta es ¿por qué estás usando el modo de compatibilidad? Mi consejo es evitar el modo de compatibilidad como la plaga. Ciertamente no es adecuado para pruebas, independientemente del problema que haya descrito, ya que hay errores conocidos y peculiaridades que se remontan a la primera vez que introdujeron el modo de compatibilidad. Si está probando la compatibilidad con versiones anteriores, realmente necesita usar una copia real de IE8 (e IE9, etc.). Vaya a modern.ie y descargue las máquinas virtuales que proporcionan para las pruebas.
Spudley
19
Hay un error abierto en el rastreador de errores de IE. Animo a todos a que visiten y le digan a Microsoft que pueden reproducir esto. connect.microsoft.com/IE/feedback/details/806767/…
Evgeny
15
Creo que usar el modo de compatibilidad para las pruebas tiene más sentido que descargar una imagen de 1/2 gigabyte para cada navegador. Así que hay errores (y este es probablemente uno de ellos), pero el 99% de las veces simplemente funciona.
Rolf

Respuestas:

29

de acuerdo aJacob Rossi [MSFT]

Esto debería corregirse en la Actualización 1 para IE11, lanzada la semana pasada .

Eso fue publicado el 22 de abril de 2014.

Al ejecutar algunas pruebas, parece que esto se solucionó y todo está funcionando sin problemas nuevamente para probar el navegador más increíble jamás creado ... ¡Internet Explorer!

L84
fuente
4
Esto necesita ser votado más. Tuve que buscar en dos respuestas de desbordamiento de pila solo para llegar aquí.
Tek
@ Lynda: ¿Podrías publicar tu versión de IE11? el mío es 11.0.9600.17631
Mohamed Hussain
1
@MohamedHussain - Mi versión es 11.0.9600.17690IC.
L84
3
DEBES ser sarcástico.
paddotk
¿Acerca de que IE es el "navegador más sorprendente"?
paddotk
20

Intenté usar esto en Internet Explorer 11 en Windows 7 para asegurarme de que mis elementos semánticos HTML5 usados se estaban creando para Internet Explorer 8 y versiones anteriores (a través de comentarios condicionales), y el navegador simplemente los ignora. -_-

Esta característica funcionó perfectamente bien en Internet Explorer 10 , y Microsoft solo tuvo que jugar con ella, ¿no es así?

<!--[if lte IE 8]><script src="ie8-html5.js"></script><![endif]-->

Aparte de esto, estoy disfrutando de Internet Explorer, lo que supone un cambio.

DylRicho
fuente
4
Sí, IE 11 es una mejor experiencia, con todas las animaciones que realmente funcionan :). Sí, MS tiene un historial de "retoques" con las cosas justo cuando los usuarios comienzan a acostumbrarse a ellas. Mire lo que le hicieron a Windows XP ... "Arreglando lo que no está roto", dirían algunas personas. De todos modos eso apesta
Rolf
9
Los navegadores Internet Explorer son tan malos. No hay coherencia entre versiones. ¿Quién diablos desarrolló esto? ¡Incluso mi abuela podría hacer un mejor trabajo!
Adrien Be
4
EDITAR: están arreglando esto (o intentando) desde el 22 de enero de 2014 connect.microsoft.com/IE/feedback/details/806767/…
Adrien Be
@AdrienBe Bueno, ciertamente es un paso en la dirección correcta.
DylRicho
1
@Anthony ¿Mi respuesta es incorrecta? ¿Cómo es eso? Básicamente está diciendo lo que acaba de decir.
DylRicho
17

Esto funcionó para mí y parece la solución más elegante / fácil ( Internet Explorer 10 e Internet Explorer 11 , supongo, son los únicos navegadores compatibles -ms-high-contract):

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* IE10+ specific styles go here */
}
cmartin
fuente
Excelente, gracias. ¿Cuándo Microsoft va a acabar con este revoltijo?
Kohjah Breese
Tanque para eso, IE 11 no respeta el antiguo método condicional. <! - [if IE]>
Gino
8

Recientemente me encontré con el mismo problema. También encontré que algunos comentarios condicionales funcionan:

  • gty ltfuncionó bien
  • gtey ltenunca funcionó

Entonces, una posible solución sería cambiar las declaraciones condicionales para usar los operadores gty lt.

La otra alternativa, que encontré más útil, fue utilizar un servicio como browserstack .

usuario1429980
fuente
8

Tengo otra solución para esto.

Internet Explorer 11 con el modo de compatibilidad de Internet Explorer 8 activado contiene la cadena 'MSIE 8.0', por lo que:

(Ejemplo de PHP)

if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0') !== false) {
    $head[] = sprintf('<link rel="stylesheet" href="ie8.css" />');
}
Andrei Konstantinov
fuente
2
¡He probado los modos de documento y parece que no cambia el agente de usuario!
mgutt
@mgutt Tienes razón. Hay dos opciones en Emulación: modo Documento y Agente de usuario. El modo de documento cambia la forma en que funciona el navegador y cómo muestra la página, y el agente de usuario cambia el navegador que informa al sitio sobre la versión del navegador. (en mi ejemplo es la variable $ _SERVER ['HTTP_USER_AGENT'] lo que contiene esta información) Así que básicamente necesitas cambiar ambas opciones a, por ejemplo, IE8.
Andrei Konstantinov
@ Andrew Gracias. Ahora encontré el escenario. El problema fue la traducción al alemán. Tradujeron "agente de usuario" por "Zeichenfolge des Benutzer-Agents" y pensé que esto se refería al juego de caracteres. Algunas cosas no deben traducirse;)
mgutt
2
Esta solución es la mejor. Lo convertí a ASP.NET MVC Razor y funciona perfectamente: @ {if (Request.UserAgent.Contains ("MSIE 8.0")) {/ * su metaetiqueta aquí * /}}
Valerio Gentile
Este sitio es una referencia útil de cómo se ven todas las permutaciones de cadenas de agentes de usuario: useragentstring.com/pages/Internet%20Explorer
Drew
4

Tuve el mismo problema, me volvió loco toda la mañana. Añadí Modernizr , y he seleccionado todas las opciones, incluyendo yepnope.js.

Así que ahora mi prueba se ve así:

Modernizr.load({
            test: Modernizr.canvas,
            nope: ['Content/Site-ie-8.min.css', 'Content/font-awesome-ie7.min.css']
});

En este caso, pruebo el lienzo (que no es compatible antes de Internet Explorer 9), por lo que cargo mi contenido condicional. Esto ahora funciona al cambiar de modo de navegador en las herramientas de desarrollo de Internet Explorer 11.

El Kabong
fuente
Los comentarios condicionales no se basan en secuencias de comandos ni en ningún código de terceros.
Walf
@Walf: cierto, pero tampoco son compatibles con IE. Vea aquí: msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx
El Kabong
3

No vi que se mencionara aquí, pero en este informe de error se observa que, si cambia la configuración de la vista de compatibilidad, los comentarios condicionales funcionan como se esperaba. Entonces:

  1. En IE11, haga clic en "Herramientas"
  2. Configuración de la vista de compatibilidad
  3. Escriba la URL y haga clic en Agregar

Parece estar funcionando bien ahora en mi localhost. No lo he probado ampliamente, pero tal vez ayude a alguien.

Simplemente alto
fuente
Pero los visitantes de su sitio web tendrían que hacer lo mismo para obtener el mismo resultado. Haciéndolo inútil.
paddotk
Si. Pero esto es para si está probando versiones anteriores de IE a través de herramientas de desarrollo de IE11. Entonces, usando IE11 pero ejecutándose como IE8, los comentarios condicionales no funcionarán. Para alguien que realmente use IE8, los comentarios condicionales funcionarán. Probablemente ^ _ ^
Just Plain High
1

Algunos de los comentarios condicionales funcionan, como gt"y lt", pero, por ejemplo, <!--[if IE 8]>no funcionan. Esto sin duda es un inconveniente para los desarrolladores que quieren probar cómo se ven sus páginas web en diferentes versiones de los navegadores Internet Explorer, pero no todo son malas noticias.

Aunque los comentarios condicionales no funcionan, aún puede probar cómo se ve su página web en cada una de las versiones de Internet Explorer agregando las hojas de estilo una a la vez: digamos que tiene una hoja de estilo para Firefox, Chrome, Internet Explorer 10 e Internet Explorer 11 llamado ' screen.css', y otra hoja de estilo SOLO para Internet Explorer 9 llamada ' screen-ie9.css' y otra SOLO para Internet Explorer 8 llamada ' screen-ie8.css'.

Para probar sus páginas web SOLAMENTE para Internet Explorer 9, puede hacer esto:

<link rel="stylesheet" href="path/css/screen.css"     type="text/css" />
<link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />

y en las herramientas de desarrollador de F12, sección Emulación, configure el 'Modo de documento' en '9' y la 'Cadena de agente de usuario' en 'Internet Explorer 9'. El modo de documento es el estándar que utiliza Internet Explorer 9 y la cadena de agente de usuario es el propio navegador.

PD: Supongo que ' screen.css' es su hoja de estilo base, que es la razón por la que la llamo primero que "sobrescribir" las correcciones de Internet Explorer 9 más tarde llamando a ' screen-ie9.css' segundo.

Al hacer esto, puede estar "seguro" (tengo que probar con máquinas virtuales para escribir la palabra "seguro" sin comillas) de que está viendo su página web en un navegador Internet Explorer 9. Cuando haya terminado de probar y diseñar en Internet Explorer 9, y quiera probar con Internet Explorer 8, puede hacer fácilmente el mismo truco reemplazando esto:

<link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />

con este:

<link rel="stylesheet" href="path/css/screen-ie8.css" type="text/css" />

Por lo tanto, es solo una cuestión de MENOR inconveniente por parte de Microsoft, PERO las nuevas herramientas de los desarrolladores de F12 ofrecen MUCHAS características sorprendentes, lo que hace que esto no sea tan importante.

Roben B
fuente