2008-10-03 44 views
17

Cuando se lanza IE8, ¿funcionará el siguiente código para agregar una hoja de estilo condicional?¿Funcionará con IE8 con comentarios condicionales?

<!--[if IE 8]> 
    <link rel="stylesheet" type="text/css" href="ie-8.0.css" /> 
<![endif]--> 

He leído informes contradictorios en cuanto a si esto funciona con la beta. Espero que alguien pueda compartir su experiencia. Gracias.

+2

Maravilloso. Otra extensión no estándar de Microsoft. –

+9

Este es muy viejo e increíblemente útil porque permite que los modificadores CSS que no son de hackeo sirvan diferentes hojas de estilo para MSIE. –

+0

Esta pregunta debería haberse cerrado hace mucho tiempo. –

Respuesta

14

Funcionó para mí, tanto en modo peculiar como en modo de cumplimiento de normas. Sin embargo, funciona no cuando se cambia al modo de compatibilidad IE8.

+1

¿Quisiste decir IE7 modo de compatibilidad? – Devon

+1

No: Beta 2 tiene un modo de navegador y un modo de documento. El modo de documento permite la compatibilidad con IE 7 (así como el modo estricto y el modo peculiar). El modo de navegador tiene las opciones "IE 7", "IE 8" y "Modo de compatibilidad IE 8". A eso me refería. –

21

Una cosa a tener en cuenta:

funciona, PERO si está cargando la página/sitio red local (por ejemplo, Intranet) se carga en IE7 modo de de forma predeterminada (actualización - localhost [*] es un caso especial, que qué renderiza en modo estándar)

Esto va en contra de la declaración original de MSFT de ir NORMAS por defecto.

p. Ej.

http://127.0.0.1/mysite/mypage.php <-- IE8 by default (updated!) 
http://localhost/mysite/mypage.php <-- IE8 by default (updated!) 
http://machinename/mysite/mypage.php <-- IE7 by default 
http://192.168.100.x/mysite/mypage.php <-- IE7 by default 
http://google.com/ <-- IE8 by default 

[*] - Scott Dickens [MSFT] señaló en un comentario que here on the IE Blog localhost era un escenario especial en la Intranet (a menudo utilizado para desarrollar sitios de Internet) por lo tanto haría en modo estándar por defecto.

Para probar qué modo de una página en Internet Explorer 8 está realmente prestando, puede utilizar comprobar las herramientas de desarrollo o utilizar este código bookmarklet (sólo funciona en IE8):

javascript: 
var vMode=document.documentMode; 
var rMode='IE5 Quirks Mode'; 
if(vMode==8){ 
    rMode='IE8 Standards Mode'; 
} else if(vMode==7){ 
    rMode='IE7 Strict Mode'; 
} 
alert('Rendering in: '+rMode); 
+0

Creo que eso depende del tipo de documento (aunque no estoy seguro, no lo he probado): según entiendo Microsoft, el modo estricto de IE 8 se activa tan pronto como se especifica * cualquier * tipo de documento HTML válido. –

+0

No, incorrecto. IE8 en la red local se procesará en IE5 (modo peculiar) o IE7 (modo estándar) si tiene un tipo de documento especificado. Para ver un sitio local representado en el modo VERDADERO ESTÁNDARES IE8, debe indicar explícitamente al IE que lo desea (por ejemplo, el usuario debe elegir esto) – scunliffe

+0

Muy interesante, ¿cómo lo sabe? ¿Puedes proporcionar alguna prueba? Cuando accedo a las herramientas de desarrollo en IE8, informa que está ejecutando modos IE8 para el modo de renderizado y el navegador al cargar páginas locales (por ejemplo, localhost/somepage.html) – Konrad

3

Herramientas/configuración de la vista Compatibilidad

desmarque todos

0

Gracias por su ayuda. Descubrí la solución, aparentemente el problema era que cada hoja de estilo utilizara su propio atributo de título. Una vez que quité el título de todas excepto la hoja de estilo principal, no hay problema.

Este es un problema extraño exclusivo de IE8 - y aunque me han dicho que se supone que debe funcionar de esa manera, algo relacionado con "Stylesheet Preference", solo sirve para crear problemas ya que la solución requiere que elimines el título que podría ser útil al crear scripts, etc., cuando necesite llamar a la hoja de estilos.

En cualquier caso, no estoy seguro si esto es un error, o se supone que es de esa manera, pero espero que Microsoft investigue más.

Gracias

+0

Creo que no debería agregar títulos idénticos a diferentes hojas de estilo vinculadas. AFAIR que tampoco funcionó bien en Konqueror (hace años). – hurikhan77

0

por qué se molestó escribir una hoja de estilo separada para IE8?

Si ya ha depurado IE7, puede forzar IE8 al modo de compatibilidad, y así mostrar su código como si IE8 fuera IE7.

Todo lo que tienes que hacer es poner esta justo debajo de la etiqueta de la cabeza de apertura. En cualquier otro lugar y no funcionará.

Y entonces eso es una media hora o así menos trabajo en promedio por proyecto, sin depuración intensa para IE8 necesita!

Incluso Msn.com hace esto - un poco irónico, ¿verdad?

escribió una publicación al respecto recientemente: http://blog.sankhomallik.com/2009/11/16/stop-wasting-time-debugging-on-ie8-when-you-dont-have-to-or-get-ie8-to-behave-like-ie7/

+0

¿Qué sucede cuando aparece IE9? – codeinthehole

0

IE8 hace bastante agradable en comparación con IE7, tengo hojas de estilo para IE6, IE7 e IE8; al principio pensé que los comentarios condicionales no funcionaban para IE8 después de un poco de experimentación, encontré que IE8 no aplicaba algunas reglas solo porque necesitaba poner primero el ancestro o la clase padre, p. que tuve una clase como

.niceclass {some:properties;more:properties;}

funcionó única si cambiaba por algo como:

.parentclass .niceclass {some:properties;more:properties;}o

#parentselector .niceclass {some:properties;more:properties;}

por cierto en mi IE8- solo css tengo solo una regla primordial, el resto se hace alm Más que Firefox, ¡aunque eso no me hace abandonar FF!

0

Por mi parte quería utilizar bordes redondeados usando CSS. IE8 en Vista no es compatible con tales. Y dado que los gráficos eran para que los bordes redondeados mostraran una bonita sombra redondeada también, la página se veía terrible en IE8.

He intentado utilizar comentarios condicionales, pero fue en vano, IE8 no sería evaluar la expresión de IE y por lo tanto si no incluiría la hoja de estilo externa.

Luego eché un vistazo a ponerlo en modo peculiar/compatibilidad, sin embargo, esto todavía no funcionaba ya que los hacks de CSS que había usado ya no funcionaban para el IE8.

Por último, pero por lo menos he encontrado un hack CSS de trabajo que va a hacer que la página correctamente cuando se encuentra en modo de compatibilidad.

* + html #test[id] { color:lime } 

Ahora, no sé si esto funciona para Internet Explorer 7 o inferior, por lo que tendría al menos tres cortes diferentes para cada IE liberan quieres apoyar, de e.e.

* + html #test, 
    html+body #test, 
    * html body #test 
    { color:lime } 

Me pregunto qué nos deparará la próxima regresión de Internet Exploiter.

Cuestiones relacionadas