Force IE8 * не * использовать представление совместимости
Просто обновил мой сайт до более нового, гораздо более стандартного дизайна. Мой предыдущий дизайн был таким хламом, что мне пришлось использовать тег IE = EmulateIE, чтобы заставить эмуляцию IE7.
К сожалению, я считаю, что браузеры могут кэшировать этот параметр из предыдущих посещений, в результате чего мой новый сайт (который отлично смотрится без нажатия кнопки) снова выглядит мусором...
Есть ли какой-либо противоположный тег, который я мог бы использовать, или какая-то магия, которую я могу сделать PHP для HTTP-заголовков, отключить кеширование этого параметра?
Ответы
Ответ 1
В отсутствие заголовка http-equiv, совместимого с X-UA, режим совместимости определяется !DOCTYPE
(или отсутствием !DOCTYPE
, в зависимости от ситуации). Для диаграммы, в которой !DOCTYPE
вы можете найти, какой режим (в разных браузерах) см. Здесь:
http://hsivonen.iki.fi/doctype/
(Вам нужно прокрутить вниз в нижней части страницы.)
Вы можете переопределить это поведение, используя элемент meta
, чтобы указать заголовок http-equiv, совместимый с X-UA, например:
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
(Примечание: IE = край идет с самой высокой доступной версией - в настоящее время IE8 от этой публикации - или можно явно указать IE8.)
Для получения дополнительной информации см. здесь:
http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx
Ответ 2
Вы также можете установить заголовок X-UA-Compatible в Apache через конфигурационный файл или файл .htaccess, используя приведенный ниже код. Кредит отправляется html5boilerplate.com
# ----------------------------------------------------------------------
# Better website experience for IE users
# ----------------------------------------------------------------------
# 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
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
BrowserMatch MSIE ie
Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
</IfModule>
</IfModule>
<IfModule mod_headers.c>
#
# Because X-UA-Compatible isn't sent to non-IE (to save header bytes), we need to inform proxies that content changes based on UA
#
Header append Vary User-Agent
# Cache control is set only if mod_headers is enabled, so that unncessary to declare
</IfModule>
Ответ 3
IE никогда не будет кэшировать параметр X-UA-Compatibility самостоятельно. Единственная другая возможность заключается в том, что пользователи сайта нажали кнопку "Совместимость" на адресной строке, прежде чем вы установили метатег X-UA-Compatbile. Затем домен вашего сайта появится в списке, хранящемся локально на клиентской машине. Я написал сообщение в блоге о том, как владельцы сайтов могут обрезать свои домены из этого локально сохраненного списка, если/когда сайт будет обновлен, чтобы быть совместимым с IE8.
http://blogs.msdn.com/ie/archive/2009/07/01/ie-compatibility-list-pruning.aspx
Ответ 4
Я знаю, что это сообщение устарело, но я нахожу его добавление в ваш файл .htaccess:
Header set X-UA-Compatible "IE=edge"
... более управляемым, чем добавление его на страницы.
Надеюсь, что это поможет кому-то.