По умолчанию IE8 переводит сайты интрасети в режим совместимости. Я попытался изменить мета-заголовок на IE8, но он не подтверждает мета-заголовок и просто использует настройки браузера. Кто-нибудь знает как это отключить?
200
По умолчанию IE8 переводит сайты интрасети в режим совместимости. Я попытался изменить мета-заголовок на IE8, но он не подтверждает мета-заголовок и просто использует настройки браузера. Кто-нибудь знает как это отключить?
Ответы:
Можно переопределить режим совместимости в интрасети.
Для IIS просто добавьте приведенный ниже код в web.config. У меня работал с IE9.
Эквивалент для Apache:
И для nginx:
И для express.js:
источник
Михаэль Иригойен прав, НО это немного сложнее ...
Если вы используете замечательный шаблон Пола Айриша, у вас будет что-то вроде следующего:
Это НЕ будет работать так, как ожидается, и приведет к тому, что IE переходит в режим совместимости в среде интрасети, если у вас установлен флажок «Отображать сайты интрасети в режиме совместимости». Вам необходимо удалить условные комментарии IE, чтобы предотвратить режим совместимости с интрасетью.
Так что следующий код будет работать:
В основном, если вы запускаете условные комментарии IE до
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
оператором, то вы будете вынуждены перейти в режим совместимости в среде интрасети, если вы используете IE9 с настройками по умолчанию.ОБНОВЛЕНИЕ - ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: Но учтите, что есть хитрость, которая заставит работать HTML5:
Добавьте emtpy, условный комментарий перед DOCTYPE. И заметьте , как хорошо, что когда вы делаете что , то вы можете также добавлять условные комментарии вокруг
X-UA-Compatible
директивы, что делает страницу HTML5-верной также. Так, например:Сообщение в блоге , который был вдохновлен первой частью этого ответа , имеет более подробно. И кстати: Как уже упоминалось в этом блоге, можно также заменить условный комментарий перед DOCTYPE с полу условным комментарием с не в состоянии :
<!--[]-->
. Таким образом, вот так:Но обратите внимание, что последний вариант (
<--[]--><!DOCTYPE html>
), как объясняется, например, этим ответом на другой вопрос , активирует хорошо известную проблему, что он - для устаревших версий IE без поддержкиX-UA-Compatioble
(читай: для IE7 и IE6) - приводит браузер в причуд режим.источник
Если вы откроете меню «Инструменты» и выберете «Параметры просмотра в режиме совместимости», то в этом диалоговом окне внизу появится параметр «Отображать сайты интрасети в режиме совместимости». Если снять этот флажок, это должно решить проблему, и IE будет использовать режим, основанный на DOCTYPE.
источник
В ответах на этот вопрос есть определенная путаница.
Верхний ответ в настоящее время - это решение на стороне сервера, которое устанавливает флаг в заголовке http, и некоторые комментарии указывают, что решение, использующее метатег, просто не работает.
Я думаю, что эта запись в блоге дает хороший обзор того, как использовать метаинформацию о совместимости, и по моему опыту работает так, как описано: http://blogs.msdn.com/b/cjacks/archive/2012/02/29/using-x- UA-Compatible к создавать долговечный-корпоративный веб-applications.aspx
Основные моменты:
Одним из важных моментов (и я думаю, что из-за этого возникает путаница), у IE есть два «класса» режимов:
Режим документа определяет механизм визуализации (как отображается веб-страница).
Режим браузера определяет, какую строку IE User-Agent (UA) отправляет на серверы, в какой IE режима документа по умолчанию и как IE оценивает условные комментарии.
Более подробную информацию о режиме документа и режиме браузера можно найти в этой статье: http://blogs.msdn.com/b/ie/archive/2010/06/16/ie-s-compatibility-features-for- сайт-developers.aspx? Redirected = True
По моему опыту метаданные совместимости будут влиять только на режим документа . Так что, если вы полагаетесь на обнаружение браузера, это вам не поможет. Но если вы используете функцию обнаружения функций, это должен быть путь.
Поэтому я бы рекомендовал использовать метатег (на html-странице), используя следующий синтаксис:
Обратите внимание: приведите список режимов браузера, которые вы тестировали.
Сообщение в блоге также советует против использования EmulateIEX. Вот цитата:
источник
Попробуйте этот метатег:
Это должно заставить IE8 отображаться как стандартный режим IE8, даже если установлен флажок «Отображать сайты интрасети в представлении совместимости» [для интрасети или для всех веб-сайтов], я попробовал сам на IE 8.0.6
источник
Наш системный администратор решил эту проблему, сняв флажок глобально для нашей организации. Пользователям даже не нужно было выходить из системы.
источник
Я нашел рабочий ответ, позволяющий переопределить проверенное представление о совместимости в интрасети. Просто добавьте в событие OnInit вашей страницы эту строку (не нужно ни meta, ни web.config customHeader):
источник
Попробуйте добавить в шапку следующее:
Предоставлено HTML5 Boilerplate Пола Айриша (но он работает и в XHTML Transitional).
источник
Мне удалось переопределить режим совместимости, указав метатег в качестве ПЕРВОГО тега в разделе заголовка, а не только в первом метатеге, но и в качестве ОЧЕНЬ ПЕРВЫГО тега .
Спасибо @ stefan.s за то, что вы ответили мне на ваш отличный ответ. До прочтения что у меня было:
ЭТО НЕ РАБОТАЕТ
убрал тег ссылки с пути и это сработало
ЭТО РАБОТАЕТ :
Таким образом, клиент IE8, настроенный на использование совместимости, отображает страницу в стандартном режиме IE8 - content = 'IE = 9' означает использование самого высокого стандарта, доступного до IE9 включительно.
источник
Это не совсем решение, но я считаю, что оно лучшее. На наших сайтах в интрасети мы говорим людям, что к нему может получить доступ только Firefox, мы не очень любезны к пользователям IE здесь. Проверьте пользовательский агент на стороне сервера или клиента и запретите им доступ из IE. И я программист .NET.
источник
Я боролся с этой проблемой и хотел помочь обеспечить уникальное решение и понимание.
Некоторые платформы на основе AJAX будут внедрять JavaScript и таблицы стилей в начале
<head>
и это, по-видимому, мешает правильной работе решения с метатегами. В этом случае я обнаружил, что непосредственная инъекция в заголовок HTTP-ответа, как и ответ Андраса Цехи, решит проблему.Однако для тех из нас, кто использует сервлеты Java, хорошим способом решения этой проблемы является использование ServletFilter.
источник
Мы можем решить эту проблему в среде Spring-Apache-tomcat, добавив одну строку в методе RequestInterceptor -
Ссылка от - Как создать фильтр и изменить заголовок ответа. В нем рассказывается, как мы можем решить эту проблему с помощью RequestInterceptor (Spring).
источник
Если вы хотите, чтобы ваш веб-сайт включал режим стандартов IE 8, используйте этот метатег вместе с действительным DOCTYPE:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
Обратите внимание на значение «EmulateIE8», а не на «IE8».
Согласно разработчикам IE, это должно выглядеть так: «Отображать DOCTYPE стандартов в режиме стандартов IE8; отображать DOCTYPE Quirks в режиме Quirks. Используйте этот тег, чтобы переопределить представление совместимости на клиентских компьютерах и привести стандарты в стандарты IE8».
больше информации об этом сообщении в блоге IE: http://blogs.msdn.com/b/ie/archive/2008/08/27/introduction-compatibility-view.aspx
источник
Этот вопрос является дубликатом режима браузера Force «Internet Explorer 8» в интрасети .
Ответы там показывают, что невозможно отключить представление совместимости (на стороне сервера) - https://stackoverflow.com/a/4130343/24267 . Это, безусловно, имеет место, поскольку ни одно из предложенных мною предложений не сработало. В IE8 «Режим браузера» настраивается на просмотр в режиме совместимости Internet Explorer 8 независимо от того, какой тип заголовка X-UA-Compatible вы отправляете.
Я должен был сделать некоторую специальную обработку для IE7 и режима совместимости, из-за чего браузер отображал с использованием IE8, но сообщить, что это был IE7, сломал мой код. Вот как я исправил свой код (я знаю, что это ужасный взлом, и я должен тестировать функции, а не версии браузера):
источник
Была такая же проблема. Работало с помощью
источник
Добавьте это внутри тега head ваших страниц (для целевой версии IE):
Обратите внимание, это НЕ изменит тот факт, что браузер говорит, что он находится в режиме совместимости (называемом режимом браузера), но страница будет отображаться в режиме стандартов IE8. Если он по-прежнему не рендерится так, как вы хотите, вероятно, потому что у вас есть javascript, который ошибочно проверяет версию IE. См. Следующий пост в блоге, чтобы определить, какое свойство следует использовать, потому что даже если вы установите метатег X-UA-Compatible, в строке агента пользователя все равно будет указано MSIE 7.0 .
В моем случае для исправления мне пришлось добавить проверку на режим совместимости IE7. Я сделал это, используя простой код JavaScript:
источник
Для всех, кто читает это и хочет отключить это через GPO для всех пользователей, это настройка:
Конфигурация компьютера / Административные шаблоны / Компоненты Windows / Internet Explorer / Представление совместимости / Включение стандартного режима Internet Explorer для локальной интрасети
хотя редактирование web.config исправило это для меня.
источник
Измените заголовки в .htaccess
Нашел решение этой проблемы здесь: https://github.com/h5bp/html5-boilerplate/issues/378
источник
Комментарий Стефана С. о режиме документа и режиме браузера был очень уместен для моей проблемы.
У меня есть метаданные X-UA-Content на странице, но я проверял версию браузера с помощью клиента
navigator.appVersion
. Этот тест не отражает метаданные, поскольку он предоставляет режим браузера, а не режим документа.Ответом для меня было проверить что-
document.documentMode
то вроде:Теперь мой мета-тег X-UA-Content отражается в тесте моего браузера.
Почему я проверяю браузер? Скорость. Различные из моих надстроек jQuery, такие как tableorter, слишком медленно работают в IE6 / 7, и я хочу их отключить. Я не уверен, что тестирование функций браузера поможет мне решить эту проблему иначе.
источник