X-UA-Compatible установлен в IE=edge, но он по-прежнему не останавливает режим совместимости
Я совсем запуталась. Я должен быть в состоянии установить
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
и IE8 и IE9 должны отображать страницу с использованием последнего движка рендеринга. Тем не менее, я только что протестировал его, и если режим совместимости включен в другом месте на нашем сайте, он останется включенным для наша страница, хотя мы должны заставить его не делать этого.
как вы должны убедиться, что IE делает не использовать режим совместимости (даже в интрасети)?
FWIW, я использование объявления HTML5 DocType (<!doctype html>).
вот первые несколько строк из страницы:
<!doctype html>
<!--[if lt IE 7 ]> <html lang="en" class="innerpage no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="innerpage no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="innerpage no-js ie8"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!-->
<html lang="en" class="innerpage no-js">
<!--<![endif]-->
<head>
<meta charset="ISO-8859-1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
EDIT:я только что узнал что по умолчанию в IE8 используется режим совместимости IE7 для сайтов интрасети. Будет ли это переопределять метатег, совместимый с X-UA?
18 ответов:
Если вам нужно переопределить параметры просмотра совместимости IE для сайтов интрасети, вы можете сделать это в интернете.config (IIS7) или через пользовательские заголовки HTTP в свойствах веб-сайта (IIS6) и установите там X-UA-совместимость. Мета-тег не переопределяет параметр интрасети IE в настройках представления совместимости, но если вы установите его на хост-сервере, он переопределит совместимость.
пример для web.config in IIS7:
<system.webServer> <httpProtocol> <customHeaders> <add name="X-UA-Compatible" value="IE=EmulateIE8" /> </customHeaders> </httpProtocol> </system.webServer>Edit: Я убрал
clearкод непосредственно перед тегомadd; это была ненужная оплошность от копирования и вставки. Хороший улов, комментаторы!
серверное решение является рекомендуемым, так как @TimmyFranks предложил в своем ответе, но если нужно реализовать
X-UA-Compatibleправило на уровне страницы, пожалуйста, прочитайте следующие советы, чтобы извлечь выгоду из опыта того, кто уже получил ожог
The
X-UA-Compatibleмета-тег должны появляются сразу после заголовка в<head>элемент. Никакие другие мета-теги, ссылки css и вызовы сценариев js не могут быть размещены раньше оно.<head> <title>Site Title</title> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta charset="utf-8"> <script type="text/javascript" src="/jsFile.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="apple-touch-icon" href="/apple-touch-icon.png" /> <link rel="shortcut icon" href="/apple-touch-icon.png" /> </head>если они есть условные комментарии на странице (допустим, расположенном в
<html>), они должны быть помещены под, после<head>.// DON'T: place class inside the HTML tag <!--[if gt IE 8]><!--> <html class="aboveIe8"> <!--<![endif]--> // DO: place the class inside the BODY tag <!--[if gt IE 8]><!--> <body class="aboveIe8"> <!--<![endif]-->команда Html5BoilerPlate написала об этой ошибке -http://h5bp.com/i/378 У них есть несколько решений.
Что касается просмотра интрасети и совместимости, есть настройки, когда вы переходите в Сервис > Настройки просмотра совместимости.
обратите внимание, что если вы обслуживаете его из PHP, вы можете использовать следующий код, чтобы исправить это.
header("X-UA-Compatible: IE=Edge");
как оказалось, это имеет отношение к "умный" выбор Microsoft чтобы заставить все сайты интрасети перейти в режим совместимости, даже если
X-UA-Compatibleустановлено значениеIE=edge.
Я также получил ту же проблему рендеринга IE9 в стандартах документов IE7 для локального хоста. Я пробовал много условных тегов комментариев, но безуспешно. В конце концов я просто удалил все условные теги и просто добавил мета-тег сразу после головы, как показано ниже, и это сработало как шарм.
<head> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">надеюсь, что это помогает
даже если вы сняли флажок " Отображать сайты интрасети в режиме совместимости "и имеете X-UA-совместимый в заголовках ответов, есть еще одна причина, по которой ваш браузер может по умолчанию использовать" просмотр совместимости " в любом случае - ваша групповая политика. Посмотрите на свою консоль для следующего сообщения:
HTML1203: xxx.xxx был настроен для запуска в режиме совместимости с помощью групповой политики.
где xxx. xxx-это домен для вашего сайта (т. е. test.com). если вы видите это, то групповая политика для вашего домена устанавливается так, чтобы любой сайт заканчивался test.com будет автоматически отображаться в режиме совместимости независимо от типа документа, заголовков и т. д.
для получения дополнительной информации, пожалуйста, обратитесь к следующей ссылке (объясняет HTML-код): http://msdn.microsoft.com/en-us/library/ie/hh180764(В=и 85).аспн
Как указывает NEOSWF выше, условные комментарии Paul Irish останавливают мета-тег, имеющий какое-либо влияние.
есть несколько исправлений все здесь (http://nicolasgallagher.com/better-conditional-classnames-for-hack-free-css/)
среди них:
добавить два класса в формате HTML, используя заголовки сервера и добавить условные комментарии выше параметра "DOCTYPE".
на моем последнем проекте я решил удалить условные комментарии пола Айриша. Мне не понравилась идея добавления чего-либо перед html без проведения большого количества тестов, и приятно видеть, что было установлено, просто посмотрев на HTML.
в конце концов я окружил div сразу после тела и использовал условные комментарии, например
<!--[if IE 7]><div class="ie7"><!--<![endif]--> ... regular body stuff <!--[if IE 7]></div><!--<![endif]-->Я мог бы сделать это вокруг тела, но его сложнее с CMSs, как Wordpress.
очевидно, что это еще один DIV внутри разметки, но только для старых браузеров.
I думаю, что это может быть решение, основанное на проекте.
Я также читал что-то о метатеге charset, который должен входить в первые 1024 байта, поэтому это гарантирует это.
иногда самые простые, самые легкие для чтения идеи являются лучшими,и его определенно стоит подумать! Благодаря 6-му комментарию по ссылке выше, чтобы указать на это.
X-UA-Compatibleбудет переопределять только режим документа, а не режим браузера, и не будет работать для всех сайтов интрасети; если это ваш случай, лучшим решением является отключение "отображать сайты интрасети в режиме совместимости" и установить параметр групповой политики чтобы указать, какие сайты интрасети нуждаются в режиме совместимости.
Я добавил следующее в мой файл htaccess, который сделал трюк:
BrowserMatch MSIE ie Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
кроме того, X-UA-совместимый должен быть первым метатегом в головном разделе
<head> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> </head>кстати, правильный порядок или основные теги головы:
<head> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta charset="utf-8"> <title>Site Title</title> <!-- other tags --> </head>таким образом
- мы устанавливаем механизм рендеринга для использования до того, как IExplorer начнет обрабатывать
- документ затем мы устанавливаем кодировку для использования для всех браузеров
- затем мы печатаем заголовок, который будет обработан с уже определенным кодирование.
Для Nginx,
add_header "X-UA-Compatible" "IE=Edge,chrome=1";ref : https://github.com/h5bp/server-configs/commit/a5b0a8f736d68f7de27cdcb202e32975a74bd2c5
Тимми Фрэнкс был прав для меня. У нас просто была проблема сегодня, когда у клиента был IE8 в масштабах всей компании, и это заставляло сайт, который мы написали для своей интрасети, работать в режиме совместимости. Установка "IE-Edge", казалось, исправила это.
<httpProtocol> <customHeaders> <clear /> <add name="X-UA-Compatible" value="IE=Edge" /> </customHeaders> </httpProtocol>
IE 11 больше не позволяет переопределять параметр просмотра совместимости браузера, отправляя заголовок...
<meta http-equiv="X-UA-Compatible" content="IE=edge" />похоже, единственный способ заставить браузер не использовать представление совместимости-это отключить его в своем браузере. Наш сайт интрасети, и опция IE по умолчанию-использовать представление совместимости для сайтов интрасети. Какая боль!
нам удалось предотвратить необходимость для пользователей, чтобы изменить настройки своего браузера для пользователей т. е. 9 и 10, но он больше не работает в IE 11. Наши пользователи IE переходят на Chrome, где это не проблема, и никогда не было.
я смог обойти эту загрузку заголовков до HTML с php, и это сработало очень хорошо.
<?php header( 'X-UA-Compatible: IE=edge,chrome=1' ); header( 'content: width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no' ); include('ix.html'); ?>ix.html это содержимое, которое я хотел загрузить после отправки заголовков.
У меня была та же проблема после попытки многих комбинаций у меня была эта работа примечание Я проверил совместимость для интрасети
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <head runat="server">
Если вы используете стек лампы, то добавьте это в свой .htaccess файл в корневой папке веб. Нет необходимости добавлять его в каждый PHP-файл.
<IfModule mod_headers.c> Header add X-UA-Compatible "IE=Edge" </IfModule>
я испытывал ту же проблему в IE11. Ни один из этих ответов не решил мою проблему. Покопавшись немного, я заметил, что браузер работает в предприятия режим. (проверьте, нажав F12 и перейдите на вкладку эмуляция, найдите раскрывающийся список профиля браузера) настройка была заблокирована, не позволяя мне изменить настройку.
я смог изменить профиль на рабочий стол после удаления CurrentVersion из реестра ключ:
HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main\EnterpriseModeпосле изменения режима на рабочий стол ответы на этот пост будут работать.
когда ваш браузер открывается с режимами совместимости, даже вы удалите и отключите все настройки режимов совместимости из вашего веб-браузера и редактора локальной групповой политики, вы можете попытаться отключить ключ регистрации.
Это также происходит со мной при использовании домена и поддомена для подключения к стороне сервера. Машина ограничена для открытия в режиме совместимости для всех поддоменов.
ОТКЛЮЧИТЬ РЕЖИМ СОВМЕСТИМОСТИ ДЛЯ Интранет
раздел HKEY_LOCAL_MACHINE - программное обеспечение - политика - Майкрософт Интернет Эксплорер - BrowserEmulation -> IntranetCompalityMode значение должно быть 0 (ноль). А также удалить существующее доменное имя из PolicyList.
в противном случае вы можете добавить новое значение (DWORD), которое содержит 0 (ноль) значение.

Comments