Принудительно включить режим браузера "Internet Explorer 8" в интрасети
Существуют "Internet Explorer 8", "Режим совместимости Internet Explorer 8" и режим IE7 в IE8.
Однако настройка по умолчанию в IE заставляет весь веб-сайт интрасети использовать "режим совместимости IE8", даже если я установил doctype, метатег и заголовок http, как предлагается, чтобы перевести его в режим IE8.
я имею
http://www.w3.org/TR/html4/loose.dtd">
а также
Но он все равно переходит в "Режим совместимости IE8", без каких-либо изменений в настройках IE.
Как перевести его в чистый режим "IE8", не меняя настройки браузера?
PS. Я не говорю о "режиме документа" здесь.
13 ответов
Похоже, что MSFT не рассматривает большую интранет-среду, в которой работает много разных веб-приложений.
Нет способа обойти настройку IE8, согласно тому, что я читал на форуме MSDN.
Поэтому мне придется попросить моих системных администраторов добавить несколько новых групповых политик, чтобы изменить параметр "Просмотр совместимости" и значение и запретить пользователю изменять значение, пока MSFT не обнаружит эту ошибку и не исправит ее.
Из сообщения в блоге MSDN (выделите их): "Режим браузера выбирается до того, как IE запрашивает веб-контент. Это означает, что сайты не могут выбрать режим браузера".
Можно переопределить режим совместимости в интрасети. Просто добавьте приведенный ниже код в web.config. У меня работал с IE9.
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
Вам нужно будет внести некоторые изменения в IE.
Вот они.....
В разделе "Свойства обозревателя" / "Местная интрасеть" / "Сайты"
В разделе "Локальная интрасеть внутри сайтов" снимите флажок "Автоматически определять сеть интрасети".
Затем выберите только "Включить все сетевые пути (UNC)"
Смотрите прикрепленные скриншоты
Мне здесь трудно найти ответы, поэтому вкратце приведу важную информацию:
Если ваша интрасеть использует настройки по умолчанию для IE, режим стандартов IE7 применяется для сайтов интрасети независимо от настроек сайта.
Из этого:
Совместимость View и Enterprise
Internet Explorer 7 сегодня способен поддерживать большое количество бизнес-сайтов. Чтобы сохранить совместимость, Internet Explorer 8 поставляется с интеллектуальными настройками по умолчанию, основанными на оценке зоны. В состоянии по умолчанию все сайты в общедоступном Интернете отображаются в режиме стандартов Internet Explorer 8 (отключено отображение совместимости), а все веб-сайты интрасети отображаются в режиме стандартов Internet Explorer 7 (представление совместимости включено).
Давайте посмотрим на некоторые примеры. Если вы переходите на сайты в вашей локальной интрасети, такие как http://myportal/ и http://sharepoint/sites/mySite, Internet Explorer 8 идентифицирует себя со строкой User Agent "7", вектором версии "7" и отображает веб-страницы, которые запускают режим стандартов в режиме стандартов Internet Explorer 7. Эта комбинация позволяет веб-страницам, которые работали правильно в Internet Explorer 7, продолжать делать это в IE8.
Чтобы переопределить параметры просмотра в режиме совместимости для интрасети или всех веб-сайтов, вам нужно настроить IE8 на эмуляцию.
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >
Установите собственный заголовок HTTP вместо использования <meta...
в <head>
раздел. Они должны быть эквивалентны, но я видел, что X-UA-Compatible
Заголовок HTTP с сервера переопределяет параметр IE 8 "Отображать сайты интрасети в режиме совместимости", где <meta...
элемент не будет.
Если вы используете.NET, у меня есть ответ для вас:
HTML:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" >
Web.Config:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=8" />
</customHeaders>
</httpProtocol>
Где-то читал, что объявление DOCTYPE должно быть самой первой строкой. Никаких комментариев, ни пустых строк.
В сочетании с настройкой заголовков ответа HTTP это сработало для меня. Browser Mode
перешел из режима совместимости IE9 в режим IE9.
Вам нужно удалить номер порта с вашего доменного имени сайта site:1180/ index /
Если браузер видит номер порта в URL - привет "думай", это интранет.
настройте свой DNS-сервер для дружественных URL-адресов - site.com/index, и он работает нормально
Чтобы декларация META работала, тип документа должен быть упрощенным:
<!DOCTYPE html>
Не более длинное утверждение в вопросе Денниса.
Ответ, помеченный как "правильный", технически правильный, но предполагает, что не существует решения реальной проблемы, с которой сталкивается большинство людей, а именно: "как правильно отобразить в IE8 веб-приложение, не поддерживающее режим совместимости, которое не поддерживает режим совместимости?".
<!DOCTYPE HTML>
<HEAD>
<meta http-equiv="X-UA-Compatible" content="Edge" >
</HEAD>
это работало для меня на нескольких рабочих станциях.
Если приведенный выше код реализован на стороне приложения, IE8, похоже, ведет себя так, как если бы он не находился в режиме совместимости, хотя он все равно будет отображать режим браузера как режим совместимости.
Это комбо помогло мне:
<!DOCTYPE HTML>
<HEAD>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >
</HEAD>
по крайней мере, инструменты разработчика IE сообщают IE9 Compat View, стандарты IE8
Я просто попробовал EmulateIE7, и это тоже сработало. упрощение расширенного!DOCTYPE был ключевым.
HKEY_CURRENT_USER\ Программное обеспечение \Microsoft\Internet Explorer\BrowserEmulation IntranetCompatibilityMode 1->0