Принудительно включить режим браузера «Internet Explorer 8» в интрасети - PullRequest
70 голосов
/ 30 апреля 2010

В IE8 есть «Internet Explorer 8», «Режим совместимости Internet Explorer 8» и режим IE7.

Однако настройка по умолчанию в IE заставляет весь веб-сайт интрасети использовать «режим совместимости IE8», даже если я установил doctype, метатег и заголовок http, как предлагается, чтобы перевести его в режим IE8.

У меня есть

<! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.01 Transitional // EN" "<a href="http://www.w3.org/TR/html4/loose.dtd" rel="noreferrer">http://www.w3.org/TR/html4/loose.dtd">

и

Но он все равно переходит в «Режим совместимости IE8», без каких-либо изменений в настройках IE.

Как перевести его в чистый режим "IE8" без изменения настроек браузера?

PS. Я не говорю здесь «режим документа».

Ответы [ 13 ]

44 голосов
/ 03 мая 2010

Похоже, что MSFT не рассматривает большую среду интрасети, в которой работает много разных веб-приложений.

Нет способа обойти настройку IE8, согласно тому, что я читал на форуме MSDN.

Итак, мне придется попросить моих системных администраторов добавить несколько новых групповых политик, чтобы изменить настройку «Просмотр совместимости» и значение и запретить пользователю изменять значение, пока MSFT не обнаружит и не исправит эту ошибку.

Из сообщения в блоге MSDN (выделено): " Режим браузера выбирается до того, как IE запрашивает веб-контент . Это означает, что сайты не могут выберите режим браузера . "

35 голосов
/ 04 мая 2011

Возможно переопределить режим совместимости в интрасети. Просто добавьте приведенный ниже код в web.config. Работал у меня с IE9.

<system.webServer>
<httpProtocol>
  <customHeaders>
    <clear />
    <add name="X-UA-Compatible" value="IE=edge" />
  </customHeaders>
</httpProtocol>

11 голосов
/ 30 апреля 2010

Вам нужно будет внести некоторые изменения в IE.

Вот они .....

В разделе «Свойства обозревателя» / «Местная интрасеть» / «Сайты»

Под: Локальная интрасеть внутри сайтов, снимите флажок «Автоматически обнаруживать сеть интрасети».

Затем выберите только «Включить все сетевые пути (UNC)»

Смотри скриншоты

Screenshot

6 голосов
/ 09 ноября 2010

Я нашел здесь ответы на трудные для понимания вопросы, поэтому вот краткая информация:

Если ваша интрасеть использует настройки по умолчанию для IE, режим стандартов IE7 применяется для сайтов интрасети независимо от настроек сайта.

С это :

Представление совместимости и Enterprise

Большое количество бизнес-направлений веб-сайты Internet Explorer 7 способен сегодня. Для того, чтобы сохранить совместимость, Internet Explorer 8 корабли с умными значениями по умолчанию на основе зона оценки. В состоянии по умолчанию все сайты в общедоступном интернете отображать в Internet Explorer 8 Режим стандартов (вид совместимости) выкл.) и на всех интранет-сайтах отображать в Internet Explorer 7 Режим стандартов (представление совместимости на).

Давайте посмотрим на некоторые примеры. если ты перейти на сайты на вашем местном интранет, как http://myPortal и http://sharepoint/sites/mySite, Internet Explorer 8 идентифицирует себя со строкой агента пользователя «7», вектор версии «7» и отображает веб-страницы, которые вызывают стандартный режим в Internet Explorer 7 Режим стандартов. Это сочетание позволяет веб-страниц, которые работали правильно в Internet Explorer 7, чтобы продолжить сделайте это в IE8.

4 голосов
/ 25 апреля 2011

Чтобы переопределить параметры просмотра в режиме совместимости для интрасети или всех веб-сайтов, вам необходимо настроить IE8 на эмуляцию.

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >
3 голосов
/ 30 апреля 2010

Установите пользовательский заголовок HTTP вместо использования <meta... в разделе <head>. Предполагается, что они эквивалентны, но я видел, что HTTP-заголовок X-UA-Compatible с сервера будет переопределять параметр IE 8 «Отображать сайты интрасети в представлении совместимости», где элемент <meta... не будет.

2 голосов
/ 12 октября 2012

Если вы используете .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>
1 голос
/ 22 декабря 2011

Где-то читайте, что объявление DOCTYPE должно быть самой первой строкой . Никаких комментариев, ни пустых строк.

В сочетании с настройкой заголовков ответа HTTP это работало для меня. Browser Mode перешел из "режима совместимости IE9" в режим "IE9".

0 голосов
/ 13 января 2015

Ответ, помеченный как «правильный», является технически правильным, но предполагает, что большинство людей не может решить реальную проблему: «как правильно отобразить в IE8 веб-приложение с включенным режимом совместимости, которое не поддерживает режим совместимости?

<!DOCTYPE HTML>
<HEAD>
    <meta http-equiv="X-UA-Compatible" content="Edge" >
</HEAD>

у меня это работало на нескольких рабочих станциях.

Если приведенный выше код реализован на стороне приложения, IE8, похоже, ведет себя так, как если бы он не находился в режиме совместимости, хотя он все равно будет отображать режим браузера в качестве режима совместимости.

0 голосов
/ 14 марта 2013

Вам необходимо удалить номер порта из вашего доменного имени сайта сайт: 1180 / индекс /

Если браузер видит номер порта в URL - привет "думай", это интранет.

настроить ваш DNS-сервер для дружественных URL-адресов - site.com / index и все работает ОК

...