Я делаю работу для клиента, который включает режим совместимости на всех сайтах интрасети. Мне было интересно, есть ли тег, который я могу вставить в мой HTML, который отключает режим совместимости.
Я делаю работу для клиента, который включает режим совместимости на всех сайтах интрасети. Мне было интересно, есть ли тег, который я могу вставить в мой HTML, который отключает режим совместимости.
Ответы:
<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:
В пограничном режиме Windows Internet Explorer отображает содержимое в самом высоком доступном режиме, что фактически нарушает парадигму «блокировки». В Internet Explorer 8 это эквивалентно режиму IE8. Если (гипотетический) будущий выпуск Internet Explorer будет поддерживать режим более высокой совместимости, страницы, переведенные в пограничный режим, будут отображаться в самом высоком режиме, поддерживаемом этой версией; однако те же самые страницы будут по-прежнему отображаться в режиме IE8 при просмотре с помощью Internet Explorer 8.
Тем не менее, режим «край» не рекомендуется в производственном использовании:
Веб-разработчикам рекомендуется ограничить использование режима Edge для тестирования страниц и других непроизводственных целей из-за возможных непредвиденных результатов рендеринга содержимого страницы в будущих версиях Windows Internet Explorer.
Честно говоря, я не совсем понимаю, почему. Но в соответствии с этим, лучший способ идти в данный момент - это использование IE=8
.
IE=10
на своих сайтах. Если вы проверили свой сайт в IE10 (предварительная версия), это безопасно использовать; в противном случае, вы можете придерживаться IE=9
пока.
Tools->Compatibility View Settings
флажок Отображать все веб-сайты в представлении совместимости. Чтобы решить проблему, я должен вернуть заголовок в ответе HTTP:X-UA-Compatible: IE=edge
После многих часов устранения неполадок в этом материале ... Вот несколько кратких советов, которые нам помогли из X-UA-Compatible
документов: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16
С помощью <meta http-equiv="X-UA-Compatible" content=" _______ " />
В Standard User Agent режимы (не-эмулировать них) игнорировать <!DOCTYPE>
директивы в вашей страницы и рендер на основе стандартов , поддерживаемых этой версией IE (например, IE=8
будет лучше повинуется разнос границы таблицы и некоторые псевдо - селекторы , чем IE=7
).
Принимая во внимание, что режимы эмуляции говорят IE следовать любым <!DOCTYPE>
директивам на вашей странице, отображая режим стандартов в зависимости от выбранной вами версии и режим причуд, основанный на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"
Если вы работаете со страницей в зоне интрасети, вы можете обнаружить, что IE9, независимо от того, что вы делаете, переходит в режим IE7 Compat.
Это связано с тем, что в настройках IE Compatibility указано, что все сайты интрасети должны работать в режиме совместимости. Вы можете снять галочку с помощью групповой политики (или просто снять галочку в IE) или установить следующее:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Это работает (как подробно описано в других ответах), но изначально может не выглядеть так: это должно произойти до объявления таблиц стилей . Если вы этого не сделаете, это игнорируется.
Я верю, что это сделает свое дело:
<meta http-equiv="X-UA-Compatible" content="IE=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, всего веб-сайта или определенных приложений.
Решение с метатегом не работает для нас, но установка его в заголовке ответа сделала:
header('X-UA-Compatible: IE=edge,chrome=1');
chrome=1
свойства, stackoverflow.com/a/22059516/368691 . Имейте в виду, что Chrome Frame был удален. blog.chromium.org/2013/06/retiring-chrome-frame.html
Еще несколько заметок на эту тему, основанных на моем недавнем опыте. В университете я работаю над проблемами ноутбуков с 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>
IE8 по умолчанию работает в стандартном режиме для внутренней сети и в режиме причуд для внутренней сети. Метатег HTML игнорируется, если для типа документа задан переходный xhtml. Решение состоит в том, чтобы добавить заголовок HTTP в коде. Это сработало для нас. Теперь наш сайт в интрасети заставляет IE8 отображать приложение в стандартном режиме.
Добавлено в PageInit базового класса страниц (ASP.net C #):
Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
ссылка: http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html
Это связано с тем, что в настройках IE Compatibility указано, что все сайты интрасети должны работать в режиме совместимости. Вы можете снять галочку с помощью групповой политики (или просто снять галочку в IE) или установить следующее:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Видимо, невозможно изменить настройки представления совместимости как групповую политику, но это то, что, возможно, можно изменить в реестре, этот метатег у меня работает нормально, мне пришлось заставить работать требуемый атрибут как часть HTML-формы , он работал в Chrome и Firefox, но не IE.
Вот хороший пример того, какие браузеры поддерживают каждый отдельный элемент HTML 5.
Обратите внимание на один общий знаменатель Google Chrome, он поддерживает все. Надеюсь, это поможет
Вставьте как самый первый элемент под тегом.
Это заставляет IE отображать страницу в физической версии IE, и игнорирует браузер «Настройка режима». Это можно установить в инструментах разработчика, попробуйте изменить его на более старую версию IE для тестирования, это следует игнорировать, и страница должна выглядеть точно так же.
Если у вас есть доступ к серверу, самый надежный способ сделать это - сделать это на самом сервере, в IIS. Перейдите к заголовкам ответа HTTP IIS. Добавить имя: X-UA-Compatible
Значение: IE = edge Это переопределит ваш браузер и ваш код.
Если вы хотите, чтобы каждая отдельная веб-страница загружала выбранный контент и использовала asp.net. Просто примените его как первый тег под тегом заголовка в Views> shared> Layout.cshtml.
просто совет