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

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

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

У меня

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

и

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

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

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

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

Ответы

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

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

Здесь они.....

В "Свойствах Интернета" / "Местная интрасеть/сайты"

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

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

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

Снимок экрана

Ответ 4

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

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

Из this:

Вид совместимости и Enterprise

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

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

Если вы используете .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>

Ответ 9

HKEY_CURRENT_USER\Программное обеспечение \Microsoft\Internet Explorer\BrowserEmulation IntranetCompatibilityMode 1 → 0

Ответ 10

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

<!DOCTYPE html>

Не более длинное выражение в вопросе Денниса.

Ответ 11

Этот комбо помогло:

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

по крайней мере IE-разработчики сообщают о просмотре приложений IE9, стандартах IE8

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

Ответ 12

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

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

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

Ответ 13

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

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

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

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