Estoy trabajando para un cliente que fuerza el modo de compatibilidad en todos los sitios de intranet. Me preguntaba si hay una etiqueta que pueda poner en mi HTML que desactive el modo de compatibilidad.
Estoy trabajando para un cliente que fuerza el modo de compatibilidad en todos los sitios de intranet. Me preguntaba si hay una etiqueta que pueda poner en mi HTML que desactive el modo de compatibilidad.
Respuestas:
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>My Web Page</title>
</head>
<body>
<p>Content goes here.</p>
</body>
</html>
Desde la página de MSDN vinculada:
El modo Edge le dice a Windows Internet Explorer que muestre contenido en el modo más alto disponible, lo que en realidad rompe el paradigma de "bloqueo". Con Internet Explorer 8, esto es equivalente al modo IE8. Si una versión futura (hipotética) de Internet Explorer admitiera un modo de compatibilidad más alto, las páginas configuradas en modo Edge aparecerían en el modo más alto admitido por esa versión; sin embargo, esas mismas páginas seguirían apareciendo en modo IE8 cuando se visualicen con Internet Explorer 8.
Sin embargo, el modo "borde" no se recomienda en el uso de producción:
Se recomienda que los desarrolladores web restrinjan su uso del modo Edge para probar páginas y otros usos que no sean de producción debido a los posibles resultados inesperados de mostrar el contenido de la página en futuras versiones de Windows Internet Explorer.
Sinceramente, no entiendo completamente por qué. Pero de acuerdo con esto, la mejor manera de hacerlo en este momento es usar IE=8
.
IE=10
en sus propios sitios. Si ha probado su sitio en IE10 (versión de vista previa), es seguro usarlo; de lo contrario, es posible que desee seguir IE=9
por ahora.
Tools->Compatibility View Settings
, y marcando Mostrar todos los sitios web en la Vista de compatibilidad. Para solucionar el problema, tengo que devolver el encabezado en la respuesta HTTP:X-UA-Compatible: IE=edge
Después de muchas horas para solucionar este problema ... Aquí hay algunos aspectos destacados que nos ayudaron desde los X-UA-Compatible
documentos: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16
Utilizando <meta http-equiv="X-UA-Compatible" content=" _______ " />
Los modos del Agente de usuario estándar (los no emulados) ignoran las <!DOCTYPE>
directivas en su página y se procesan según los estándares admitidos por esa versión de IE (por ejemplo, IE=8
obedecerán mejor el espaciado de borde de la tabla y algunos pseudo-selectores que IE=7
).
Mientras que los modos de emulación le dicen a IE que siga las <!DOCTYPE>
directivas en su página, representando el modo estándar basado en la versión que elija y el modo peculiar basado enIE=5
Los valores posibles para el content
atributo son:
content="IE=5"
content="IE=7"
content="IE=EmulateIE7"
content="IE=8"
content="IE=EmulateIE8"
content="IE=9"
content="IE=EmulateIE9"
content="IE=edge"
Si está trabajando con una página en la Zona de Intranet, es posible que IE9, sin importar lo que haga, vaya al modo Compat de IE7.
Esto se debe a la configuración dentro de la configuración de compatibilidad de IE que dice que todos los sitios de Intranet deben ejecutarse en modo de compatibilidad. Puede desmarcar esto mediante una política de grupo (o simplemente desmarcándolo en IE), o puede configurar lo siguiente:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Esto funciona (como se detalla en otras respuestas), pero puede que inicialmente no lo parezca: debe aparecer antes de que se declaren las hojas de estilo . Si no lo hace, se ignora.
Creo que esto hará el truco:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Como se sugiere en esta respuesta a una pregunta relacionada, el modo "borde" se puede configurar en el archivo Web.Config. Esto hará que se aplique a todo el HTML devuelto por la aplicación sin la necesidad de insertarlo en páginas individuales:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Este mismo paso también se puede lograr modificando los "Encabezados de respuesta HTTP" utilizando el Administrador IIS para el servidor IIS, el sitio web completo o aplicaciones específicas.
La solución de metaetiquetas no funcionaba para nosotros, pero configurarla en el encabezado de respuesta sí:
header('X-UA-Compatible: IE=edge,chrome=1');
chrome=1
propiedad, stackoverflow.com/a/22059516/368691 . Tenga en cuenta que Chrome Frame ha sido retirado. blog.chromium.org/2013/06/retiring-chrome-frame.html
Solo unas pocas notas más sobre este tema basadas en mis experiencias recientes. La universidad en la que trabajo tiene problemas con las computadoras portátiles con IE 8 en modo de compatibilidad para todos los sitios de intranet. Intenté agregar la metaetiqueta para deshabilitar este modo para las páginas que mi sitio ofrece, pero IE siempre ignoró esta etiqueta. Como Lance mencionó en su publicación, agregar un encabezado de respuesta solucionó este problema. Así es como configuro el encabezado basado en el método repetitivo HTML5:
<IfModule mod_headers.c>
Header set X-UA-Compatible "IE=edge,chrome=1"
# mod_headers can't match by content-type, but we don't want to send this header on *everything*...
<FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$">
Header unset X-UA-Compatible
</FilesMatch>
</IfModule>
Para que este encabezado se envíe realmente, debe asegurarse de tener mod_headers activados en Apache. Si quieres asegurarte de tener este mod activado, ponlo en una página que pueda ejecutar php:
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
IE8 adopta por defecto el modo estándar para IntERnet y el modo peculiar para IntRAnet. La metaetiqueta HTML se ignora si tiene el doctype establecido en xhtml de transición. La solución es agregar un encabezado HTTP en el código. Esto funcionó para nosotros. Ahora nuestro sitio de intranet está obligando a IE8 a representar la aplicación en modo estándar.
Agregado a PageInit de la clase de página base (ASP.net C #):
Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
referencia: http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html
Esto se debe a la configuración dentro de la configuración de compatibilidad de IE que dice que todos los sitios de Intranet deben ejecutarse en modo de compatibilidad. Puede desmarcar esto mediante una política de grupo (o simplemente desmarcándolo en IE), o puede configurar lo siguiente:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Aparentemente, no es posible cambiar la configuración de la vista de compatibilidad como una política de grupo, pero es algo que quizás se pueda cambiar en el registro, esta metaetiqueta funciona bien para mí, tuve que hacer que el atributo requerido funcione como parte de un formulario html , funcionó en Chrome y Firefox pero no en IE.
Aquí hay una buena imagen de lo que los navegadores admiten cada elemento html 5 individual.
Observe el denominador común Google Chrome, es compatible con todo. Espero que esto sea de ayuda
Insertar como el primer elemento debajo de la etiqueta.
Esto obliga a IE a representar la página en la versión física de IE, e ignora la "Configuración de modo" del navegador. Esto se puede configurar en las herramientas de desarrollador, intente cambiarlo a una versión anterior de IE para probar, esto debe ignorarse y la página debe verse exactamente igual.
Si tiene acceso al servidor, la forma más confiable de hacerlo es hacerlo en el propio servidor, en IIS. Vaya a Encabezados de respuesta HTTP de IIS. Agregue nombre: X-UA-Compatible
Valor: IE = edge Esto anulará su navegador y su código.
Si desea que cada página web individual cargue el contenido elegido y está utilizando asp.net. Simplemente aplíquelo como la primera etiqueta debajo de la etiqueta de encabezado en Vistas> compartido> Layout.cshtml
solo un consejo