69

В IE8 есть «Internet Explorer 8», «Режим совместимости Internet Explorer 8» и режим IE7.Форсирование режима браузера Internet Explorer 8 в интранете

Тем не менее, по умолчанию в 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. Я не говорю «режим документа» здесь.

+0

Несмотря на то, что некоторые из ответов говорят, для этого есть легкое исправление, как указано Codex73: В меню «Инструменты -> Параметры совместимости» снимите флажок «Отобразить сайты интрасети в представлении совместимости». – nedned

+35

Это может сработать для некоторых, но это не программный ответ, который Деннис искал –

+1

Как вы определяете, в каком режиме он находится? – Jonathan

ответ

44

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

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

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

С MSDN blog post (акцент их): "Режим Браузер выбран до IE запрашивает веб-контента Это означает, что сайты не могут выбрать браузер режима.."

+1

Mmm ... a -1 отмечен как ответ. Я на самом деле это правильный ответ, по умолчанию IE отображает сайты интрасети как режим совместимости IE8. Вам не нужно менять все те опции, о которых упоминал Codex. Просто снимите флажок «Показывать сайты интрасети в окне« Совместимость »в диалоговом окне« Настройки страницы совместимости ». Да, большая боль, все пользователи должны будут сделать. Немой идеей по умолчанию использовать все веб-сайты для обеспечения совместимости и не предоставлять способ ее переопределения. (+1, поэтому он больше не -1) –

+1

Мне удалось найти одно рабочее решение. См. Мой ответ. –

+0

Тег 'X-UA-Compatible' должен * переопределять * режим, который браузер использовал бы в противном случае, не так ли? –

11

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

Вот они .....

В окне Свойства обозревателя/Local Intranet/Сайты

Under: Локальные внутри сайты интрасети, снимите флажок "Автоматическое определение сети интранет".

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

прилагается скриншоты

Screenshot

+0

Зачем мне это делать? Просьба указать ссылку или ссылку на объяснение причин, по которым необходимо настроить параметры интрасети безопасности. –

+1

вот ваша ссылка на почему: http://blogs.msdn.com/ie/archive/2008/08/27/introducing-compatibility-view. aspx Вы также можете отключить режим совместимости для всех сайтов интрасети, если это необходимо. вот еще одна ссылка: http://support.microsoft.com/kb/956197 – Codex73

+3

Отказ от режима совместимости для сайтов интрасети, вероятно, является более подходящим для этого решения, так как это просто останавливает обнаружение интрасети в целом. – nedned

3

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

+1

, к сожалению, оно не работает. Проверено, что HTTP-заголовок имеет совместимость с X-UA: IE = 8, но он по-прежнему переходит в режим «Совместимость с IE8». –

+0

Теперь я лучше понимаю ваш вопрос. Режим «Браузер» будет влиять только на строку UA и в режиме документа, в котором вы закончите, когда не указано «X-UA-Compatible». Поэтому, хотя режим документа можно изменить, режим браузера не может, я думаю. И это не рассматривается как проблема, так как режим документа влияет на рендеринг страниц. Есть ли причина, по которой вам нужно изменить режим браузера, возможно, для некоторых нюансов строки UA? Мне любопытно. Можете ли вы сказать разницу без открытия инструментов разработчика? –

+1

Дэвид, некоторые javascript ведут себя не одинаково в двух режимах (и вы никогда не можете найти полный список подробностей), некоторые из специфичных для IE функций даже отключены в реальном режиме IE8. Вот почему они - два режима, а не один. Когда пользователь использует тот же браузер, мне жаль, что они не видят и не запускают его; не такая же версия, разный кошмар обозревателя. –

6

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

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

от this:

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

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

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

+1

И вы можете легко отключите его в «Инструменты -> Параметры совместимости». – nedned

+14

Как умный, Microsoft. – Rolf

+6

@humble coffee, «легко» устанавливает нестандартный заголовок 'X-UA-Compatible'. Управление локальными настройками компьютера в сети поражает меня как экспоненциально сложную задачу. – ANeves

4

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

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

не работал для меня – codeulike

+4

(уточнить: он работает в режиме документа, но не в режиме браузера) – codeulike

34

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

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

+1

он работал в нашей интранете .. спасибо! –

+1

не работал для меня (IIS6 на сервере, IE8 на клиенте) – codeulike

+22

(уточнить: он работает в режиме документа, но не в режиме браузера) – codeulike

0

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

+2

Я верю, что OP спрашивал о серверных решениях, а не о клиентских решениях. – pinkgothic

1

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

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

+0

Мы говорим об IE8. –

+0

Это правда, что декларация DOCTYPE должна быть первой строкой. Javascript include может идти перед ним, но не другие элементы главы. Я проголосовал за -1. – Deborah

0

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

<!DOCTYPE html> 

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

+0

Этот HTML-заголовок должен быть magicheader HTML5. Который, я думаю, не поддерживается IE8 ?? Может ли кто-нибудь подтвердить? –

+0

Да, это документ HTML5 и не будет работать в IE8. –

+0

Этот doctype работает в ie8, хотя функции HTML5 не будут. Вот хорошая ссылка: http://ejohn.org/blog/html5-doctype/#postcomment – Deborah

2

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

проголосовал за -1, поскольку этот ответ мне кажется ценным, и объяснений по нему не было. – Deborah

0

Это комбо сделал трюк для меня:

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

по крайней мере инструментов IE разработчик сообщает IE9 Compat View, стандарты IE8

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

0

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

Если браузер см номера порта в URL - привет «думать», что это является внутренней сетью.

Настройки DNS-сервер для дружественного URL - site.com/index и работают нормально

0

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^