html internet-explorer svg vml x-ua-compatible

html - Emula IE7 para IE8 pero no para IE9 usando "X-UA-Compatible"



internet-explorer svg (8)

Acabo de jugar y encontré las siguientes obras para mí:

<meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" >

¡Eso es con una coma no un semi colon!

No he observado la especificación, pero el formato es similar al content = "IE = 7, chrome = 1" que funciona para Chrome Frame. También encontré que content = "IE = 7,9" funciona pero sospecho que no es un formato correcto.

Editar:

Tenga cuidado con un problema grave si su página está en un iframe. Si usa lo anterior en una página enmarcada donde el padre está en cualquier modo inferior a IE9 estricto, entonces IE9 volverá al modo IE8 (¡ignorando la solicitud IE = 7!). Cualquier solución temporal conocida es bienvenida :) Puede que no sea relevante para IE11.

Lo anterior parece ser un efecto secundario de la característica de diseño por diseño, que iframes (y supongo que marcos) están todos en modo IE9, o todos son menos que el modo IE9. Uno nunca puede mezclar fotogramas IE9 con <fotogramas IE9, vea los números de MS #599022 y #635648 .

Editar 2:

Tenga en cuenta que IE11 solo admite "IE = edge" (no IE = 11), y que usar IE = edge tiene efectos significativos sobre la funcionalidad de IE (incluido el agente de usuario).

Editar 3:

Editar 4:

X-UA-Compatible se eliminó del navegador Microsoft Edge. Solo Internet Explorer tiene los modos de compatibilidad. Tenga en cuenta que si está usando WebView dentro de una aplicación en Windows Phone 10, entonces todavía está usando IE11 (no Edge).

Además, por diversas razones, no puede confiar en que el agente de usuario le indique el nivel de compatibilidad correcto, en su lugar utilice document.documentMode desde JavaScript.

Tengo un sitio web que depende del dibujo vectorial, para Internet Explorer estoy usando VML y para otros navegadores estoy usando SVG . IE8, sin embargo, no tiene soporte para ninguno de los dos sin volver al modo IE7 que tiene VML.

Por lo tanto, incluyo <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> .

El problema (bueno, de hecho, es algo bueno) es que IE9 ahora tiene soporte para SVG, así que no quiero que vuelva al modo IE7, que tiene un rendimiento y compatibilidad mucho peores. ¿Cómo le digo solo a IE8 que vuelva al modo IE7 pero que IE9 permanezca en modo IE9?

En este momento estoy haciendo una verificación del lado del servidor del agente, ya sea para incluir el EmulateIE7-string en la cabeza o no, pero quiero evitar esto en la medida de lo posible.


Creo que lo que necesitas es:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=EmulateIE9">

de acuerdo con http://blogs.msdn.com/b/ie/archive/2010/06/16/ie-s-compatibility-features-for-site-developers.aspx ya que dice esto como "... un ejemplo que combina los valores para que IE8 presente una página web en el modo de estándares IE7, mientras que IE9 representa la página web en el modo de estándares de IE9: "

Sin embargo, por mi parte, no puedo hacer que esto funcione.


El modo dual mencionado por otra persona debería funcionar (pero no como lo muestra Microsoft ) y es lo más parecido que he visto en la documentación de MS que debería funcionar como se describe. Hay una actualización a continuación que muestra la forma correcta que debe tomar el valor del atributo meta.

Entonces, si usas esto:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=EmulateIE9">

Desafortunadamente, lo que obtendrás es IE8 renderizado como IE8 debido a la versión difusa que vectoriza el motor compatible con x-ua. Consulte este documento: Definición de la compatibilidad de documentos: comprensión de los valores de atributos de contenido en MSDN. En esa sección, verá que en la primera mitad, definen cualquier vector de versión definido como más grande que la versión actual del navegador que se interpretará como el motor de representación más grande disponible. Por lo tanto, emulateIE9 get se traduce a emulateIE8. Estúpido.

Luego, prácticamente al mismo tiempo, hablan sobre el uso de vectores de versiones múltiples como en el fragmento de código anterior para excluir un motor en particular. Pero debido a la lógica de la versión difusa, eso nunca funcionaría. Ah, Microsoft. Fallar nuevamente.

La razón por la cual usar CCs alrededor del meta no funcionará, es que el navegador debe haber elegido un motor de renderizado para cuando golpea un CC. La meta x-u debe aparecer antes que cualquier otra cosa en el encabezado, excepto en otras metas o el título de acuerdo con la documentación de MS.

Si alguien puede resolver esto, soy todo oídos porque estoy desesperado por excluir IE8 de soporte mientras incluyo IE9.

ACTUALIZACIÓN IMPORTANTE :

Robocat señala que usar una coma en lugar de un punto y coma como muestra Micrsoft es la forma correcta de hacerlo. Lo probé y funcionó para mí. He actualizado mi página de prueba .

Entonces la forma correcta es esta (como sugiere robocat):

<meta http-equiv="X-UA-Compatible" content="IE=7, IE=9">

La forma incorrecta es esto (como lo sugiere Microsoft):

<meta http-equiv="X-UA-Compatible" content="IE=7; IE=9">


Este funciona para IE9 para mí.

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


Hasta ahora he usado todo esto, nada funciona en IE9:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" > <meta http-equiv="X-UA-Compatible" content="IE=8" > <httpProtocol> <customHeaders> <clear /> <add name="X-UA-Compatible" value="IE=EmulateIE8" /> </customHeaders> </httpProtocol>

esto es tan frustrante, ninguna de estas metaetiquetas parece estar funcionando. Microsoft, ¿Qué es tan difícil para apoyar cosas que dices que deberían funcionar en tu documentación? tenemos que pasar horas haciendo guerras de navegadores. Estás perdiendo el tiempo de todos.


Si quieres que IE 8 use los estándares IE7 e IE 9 para usar los estándares IE9, este me funcionó:

<meta http-equiv="X-UA-Compatible" content="IE=7, IE=9">

Para IE9, esto me da el modo de compatibilidad IE 9 con los estándares IE 9. Para IE8 esto me da el modo de navegador IE8 Document Mode IE7 Standards


Wow Microsoft realmente ha creado una pesadilla aquí. ¡Vamos a hablar de esto en el futuro!

De todos modos, esto funciona para mí.

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=EmulateIE9" />