Принудительный режим браузера "Internet Explorer 8" в интрасети


в IE8 есть "Internet Explorer 8", "режим совместимости Internet Explorer 8" и режим IE7.

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

У меня есть

http://www.w3.org/TR/html4/loose.dtd">

и

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

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

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

13 69

13 ответов:

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

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

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

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

можно переопределить режим совместимости в интрасети. Просто добавьте ниже код в интернете.конфиг. Работал для меня с IE9.

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

вам придется внести некоторые коррективы в IE.

Они есть.....

В Internet Options / Local Intranet / Sites

В разделе: локальная интрасеть внутри сайтов снимите флажок "Автоматически обнаруживать сеть интрасети".

затем выберите только " включить все сетевые пути (UNCs)

смотрите прикрепленные скриншоты

Screenshot

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

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

с этой:

просмотр совместимости и предприятия

большое количество бизнес- веб-сайты-это 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.

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

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >

установите пользовательский заголовок HTTP вместо использования <meta... на . Они должны быть эквивалентны, но я видел, что 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".

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\BrowserEmulation IntranetCompatibilityMode 1-->0

для того, чтобы мета-объявление работало, doctype должен быть упрощенной версией:

<!DOCTYPE html>

не более длинное утверждение в вопросе Денниса.

эта комбинация сделала трюк для меня:

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

по крайней мере IE developer tools сообщает IE9 Compat View, стандарты IE8

просто для пинки я попробовал EmulateIE7 и это тоже сработало. упрощение расширенного !Был установлен ключ.

вам нужно удалить номер порта из имени вашего доменного сайта сайт:1180 / index/

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

настройка dns-сервера для дружественных URL-адресов -site.com/index и это работает нормально

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

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

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

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