Я выполняю работу для клиента, который принудительно поддерживает режим совместимости на всех сайтах интрасети. Мне было интересно, есть ли в моем теге тег, который отключает режим совместимости.
Отключить режим совместимости IE с помощью тегов
Ответ 1
<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>
На связанной странице MSDN:
Режим Edge сообщает Windows Internet Explorer отображать содержимое в максимально доступном режиме, что фактически нарушает парадигму "блокировки". В Internet Explorer 8 это эквивалентно режиму IE8. Если (гипотетический) будущий выпуск Internet Explorer поддерживает более высокий режим совместимости, страницы, установленные в режиме Edge, будут отображаться в самом высоком режиме, поддерживаемом этой версией; однако те же страницы все равно будут отображаться в режиме IE8 при просмотре с помощью Internet Explorer 8.
Однако режим "edge" не рекомендуется при использовании:
Рекомендуется, чтобы веб-разработчики ограничивали использование режима Edge для проверки страниц и других непроизводственных целей из-за возможных неожиданных результатов отображения содержимого страницы в будущих версиях Windows Internet Explorer.
Я честно не понимаю, почему. Но в соответствии с этим лучшим способом перейти на данный момент является использование IE=8
.
Ответ 2
После многих часов устранения неполадок этого материала... Вот некоторые быстрые моменты, которые помогли нам из X-UA-Compatible
docs: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16
Используя <meta http-equiv="X-UA-Compatible" content=" _______ " />
-
Режимы стандартного пользовательского агента (неэмулирующие) игнорируют директивы
<!DOCTYPE>
на вашей странице и выполняют рендеринг на основе стандартов, поддерживаемых этой версией IE (например,IE=8
лучше будут соблюдать границы таблицы и некоторые псевдоселекторы, чемIE=7
). -
В то время как режимы Emulate сообщают IE, что они следуют любым директивам
<!DOCTYPE>
на вашей странице, в соответствии со стандартом на основе выбранной вами версии и режима quirks на основеIE=5
-
Возможные значения для атрибута
content
:content="IE=5"
content="IE=7"
content="IE=EmulateIE7"
content="IE=8"
content="IE=EmulateIE8"
content="IE=9"
content="IE=EmulateIE9"
content="IE=edge"
Ответ 3
Если вы работаете со страницей в зоне интрасети, вы можете обнаружить, что IE9 независимо от того, что вы делаете, переходит в режим совместимости IE7.
Это связано с настройкой в настройках совместимости IE, в которой говорится, что все сайты интрасети должны запускаться в режиме совместимости. Вы можете отключить это с помощью групповой политики (или просто отключить ее в IE), или вы можете установить следующее:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Это работает (как описано в других ответах), но может не отображаться вначале так: он должен появиться до объявления стилей. Если вы этого не сделаете, он будет проигнорирован.
Ответ 4
Я считаю, что это сделает трюк:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Ответ 5
Как было предложено в этом ответе на соответствующий вопрос, режим "edge" может быть установлен в файле Web.Config. Это применит ко всему HTML, возвращенному из приложения, без необходимости вставлять его на отдельные страницы:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Этот же шаг можно также выполнить, изменив "Заголовки ответов HTTP" с помощью диспетчера IIS для сервера IIS, всего веб-сайта или конкретных приложений.
Ответ 6
Решение метатега не работало для нас, но установка его в заголовке ответа сделала:
header('X-UA-Compatible: IE=edge,chrome=1');
Ответ 7
Еще несколько заметок на эту тему, основанные на моем недавнем опыте. В университете я работаю над выпуском ноутбуков с IE 8, установленными в режим совместимости для всех сайтов интрасети. Я попытался добавить метатег, чтобы отключить этот режим для страниц, обслуживаемых моим сайтом, но IE последовательно игнорировал этот тег. Как упоминал Ланс в своем посте, добавление заголовка ответа исправило эту проблему. Вот как я устанавливаю заголовок на основе шаблона 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>
Для того, чтобы этот заголовок действительно был отправлен, вы должны убедиться, что в Apache включен mod_headers. Если вы хотите убедиться, что этот мод включен, поместите это на страницу, на которой можно запустить php:
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
Ответ 8
IE8 по умолчанию использует режим стандартов для режима intERnet и quirks для intRAnet. Метатег HTML игнорируется, если у вас установлен doctype на xhtml transitional. Решение состоит в том, чтобы добавить HTTP-код в код. Это сработало для нас. Теперь наш сайт интрасети заставляет IE8 отображать приложение в стандартном режиме.
Добавлено в PageInit базового класса страницы (ASP.net С#):
Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
ссылка: http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html
Ответ 9
Это связано с настройкой в настройках совместимости IE, в которой говорится, что все сайты интрасети должны запускаться в режиме совместимости. Вы можете отключить это с помощью групповой политики (или просто отключить ее в IE), или вы можете установить следующее:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
По-видимому, невозможно изменить параметры представления совместимости в качестве групповой политики, но это может быть возможно изменить в реестре, этот метатег отлично работает для меня, мне пришлось сделать требуемый атрибут работой как часть html-форму, он работал в chrome и firefox, но не в IE.
Здесь хорошо видно, какие браузеры поддерживают каждый отдельный элемент html 5.
Обратите внимание на один общий знаменатель Google Chrome, он поддерживает все. Надеюсь, что это поможет.
Ответ 10
Вставить как самый первый элемент под тегом.
Это заставляет IE отображать страницу в физической версии IE и игнорирует настройку режима браузера. Это можно установить в инструментах разработчика, попробуйте изменить его на более старую версию IE для тестирования, это следует игнорировать, и страница должна выглядеть точно так же.
Ответ 11
Если у вас есть доступ к серверу, самый надежный способ сделать это - сделать это на самом сервере в IIS. Перейдите в заголовки ответов HTTP IIS. Добавить
Имя: X-UA-совместимый
Значение: IE = край
Это переопределит ваш браузер и ваш код.
Ответ 12
Если вы хотите, чтобы каждая отдельная веб-страница загружала выбранный контент и использует asp.net. Просто примените его как первый тег под тегом заголовка в Views> shared> Layout.cshtml
просто подсказка