Принудительный режим браузера "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 ответов


кажется, что 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 / Локальная Интрасеть / Сайты

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

затем выберите только " включить все сетевые пути (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, и это сработало. упрощение расширенного !DOCTYPE был ключевым.


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

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

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


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

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

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

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