Ответ 1
Вы всегда можете установить параметр X-UA-Compatible в фактические заголовки HTTP. Как вы это делаете, это зависит от используемого веб-сервера и того, что вы используете серверную структуру, если таковая имеется.
Я проверил свой сайт с помощью validator.w3.org
Сообщается о следующей ошибке:
Line 5, Column 67: Bad value X-UA-Compatible for attribute http-equiv on element meta.
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" >
Если я не включаю этот тег META, все посетители IE9 будут видеть мой сайт в режиме Quirks, и я хочу это предотвратить.
Любая помощь будет принята с благодарностью!
Вы всегда можете установить параметр X-UA-Compatible в фактические заголовки HTTP. Как вы это делаете, это зависит от используемого веб-сервера и того, что вы используете серверную структуру, если таковая имеется.
Такая же проблема, но мое решение состоит в том, чтобы добавить следующую строку в мой файл .htaccess:
Header set X-UA-Compatible "IE=edge"
Отлично работает для меня...
Вам просто нужно согласиться с тем фактом, что если вы хотите поддерживать IE, вам нужно отказаться от совершенной оценки валидации.
Хорошо, validity != quality
Решение очень простое, и тема может включать в себя такие простые шаблоны функций просто открыть/шаблоны/ВАШ ШАБЛОН /warp/systems/themes/head.php
от
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
к
<!--[if IE]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->
Для людей, использующих PHP, способ передать этот параметр через функцию заголовка в PHP:
header('X-UA-Compatible: IE=edge,chrome=1');
Вот сообщение с кодом + пояснения.
Для парней, использующих ASP.NET MVC
Один из вариантов - использовать Action Filter для контроллеров/действий. Это немного замедляет ответы сервера, но я не знаю точных цифр. Но это чистый способ сделать это:
///
/// Represents an attribute that is used to add HTTP Headers to a Controller Action response.
///
public class HttpHeaderAttribute : ActionFilterAttribute
{
///
/// Gets or sets the name of the HTTP Header.
///
/// The name.
public string Name { get; set; }
///
/// Gets or sets the value of the HTTP Header.
///
/// The value.
public string Value { get; set; }
///
/// Initializes a new instance of the class.
///
/// The name.
/// The value.
public HttpHeaderAttribute(string name, string value) {
Name = name;
Value = value;
}
public override void OnResultExecuted(ResultExecutedContext filterContext) {
if(!filterContext.HttpContext.Response.Headers.AllKeys.Contains(Name, StringComparer.OrdinalIgnoreCase))
filterContext.HttpContext.Response.AppendHeader(Name, Value);
base.OnResultExecuted(filterContext);
}
}
Однако для меня самый лучший и самый чистый способ - использовать web.config
. Поместите этот код в элемент <system.webServer>
:
<httpProtocol>
<customHeaders>
<!--
http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/
Uncomment to serve cross-domain ajax requests
<add name="Access-Control-Allow-Origin" value="*" />
-->
<!--
Force the latest IE version, in various cases when it may fall back to IE7 mode
github.com/rails/rails/commit/123eb25#commitcomment-118920
Use ChromeFrame if it installed for a better experience for the poor IE folk
-->
<add name="X-UA-Compatible" value="IE=Edge,chrome=1" />
<!--
Allow cookies to be set from iframes (for IE only)
If needed, uncomment and specify a path or regex in the Location directive
<add name="P3P" value="policyref="/w3c/p3p.xml", CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"" />
-->
<!-- A little extra security (by obscurity) -->
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
Очевидно, что это работает только в IIS7 +.
НТН
Вы пробовали не наплевать, что HTML-валидаторы говорят о вашем коде? Это обычно работает для меня.