Использование X-UA-Compatible для эмуляции IE9 в корпоративной настройке

Я читал об эмуляции типа документа и режиме совместимости в IE и должен сказать, что это совсем немного, чтобы разобраться.

Я разработал приложение с Bootstrap 3 и Ember, отображающее несколько страниц, управляемых через меню.

Я проверил это во всех браузерах, Webkit, Moz и IE, и все казалось идеальным. Я работаю в крупной корпорации, поэтому, когда я решил протестировать его на некоторых компьютерах моих коллег, в IE я получил пустую страницу. Теперь я нашел это очень странным, потому что все они работали под управлением IE10 или IE11, хотя есть странный IE9. Я не мог этого понять, потому что он отлично отображается в моем IE.

Так или иначе, я начал нажимать F12 в их браузерах и понял, что у многих из них IE7 эмулируется, хотя они используют IE10 или 11.

Я немного прочитал об этой проблеме, и я нашел следующее:

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

Итак, я добавил эту строку на свою страницу, чтобы она выглядела следующим образом:

<!DOCTYPE html>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />

Теперь мой вопрос заключается в следующем: правильно ли я предполагаю, что если при использовании IE на работе была установлена ​​​​какая-то групповая политика, этот обходной путь решит проблему?

Я проведу некоторые тесты завтра утром, но просто хотел знать, правильно ли это?

Многие люди на работе используют Chrome и Firefox или что угодно, но, очевидно, немало тех, кто использует IE.


person user1525612    schedule 28.04.2015    source источник
comment
Я верю, что групповая политика победит. У меня возникла проблема с приложением для интрасети, где, например, был установлен флажок «Включить режим совместимости для приложений интрасети». Заголовки HTTP, метатеги, ничего не работало. Нам пришлось снять этот флажок.   -  person dmeglio    schedule 28.04.2015


Ответы (2)


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

https://msdn.microsoft.com/en-us/library/ie/gg622935(v=vs.85).aspx

Что касается режима документа, я предлагаю вам использовать его вместо этого:

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

Установка версии «IE=edge» указывает Internet Explorer использовать новейший движок для рендеринга страницы и выполнения JavaScript.

https://www.modern.ie/en-us/performance/how-to-use-x-ua-compatible

Единственная причина, по которой вы хотите «IE = EmulateIE9», заключается в том, что ваше приложение нацелено на устаревший режим документа, что в вашем случае не так, поскольку вы используете новейшие веб-фреймворки. Я предполагаю, что вы хотите получить лучший пользовательский интерфейс для своих пользователей.

Я понимаю, что в вашем случае версии IE различаются и что некоторые из них могут не поддерживать "IE=edge". Это будет просто нормально, потому что он вернется к максимальному поддерживаемому режиму документа. Например, IE8 с IE=9, IE=Edge или IE=EmulateIE9 приводит к режиму IE8.

https://msdn.microsoft.com/en-us/library/ff405771(v=vs.85).aspx

person securecodeninja    schedule 28.04.2015

IE использует разные зоны безопасности. для разных типов контента. Материалы из Интернета загружаются в зону Интернета. Материалы из локальной сети загружаются в зону Интранет. Если вы зайдете в «Свойства обозревателя», вы увидите, что существуют разные настройки безопасности применяются к различным зонам.

Если вы развертываете приложение через сеть, ваше приложение, скорее всего, загружает приложение в зоне интрасети (щелкните правой кнопкой мыши страницу и выберите «Свойства» для подтверждения).

По умолчанию IE загружает страницы интрасети в режиме совместимости, что аналогично использованию EmulateIE7 в качестве значения содержимого для x-ua-совместимого элемента. Это означает, что при отсутствии дополнительных тегов/изменений ваше приложение обрабатывается так, как если бы оно просматривалось в IE7.

Если вам нужен определенный режим документа, вы должны иметь возможность указать этот режим непосредственно в значении содержимого, например, content="ie=9". Если это не поможет, попробуйте добавить MotW на страницу, чтобы страница загружалась в зоне Интернета. В свою очередь, это должно позволить вступить в силу параметру совместимости с x-ua.

Вы также можете изменить параметры просмотра в режиме совместимости, при условии, что они не отключены с помощью объекта групповой политики, чтобы страницы интрасети не загружались автоматически в режиме совместимости.

Надеюсь это поможет...

-- Ланс

person Lance Leonard    schedule 28.04.2015
comment
Привет. Спасибо всем за комментарии, это действительно полезно. Просто примечание: хотя приложение в конечном итоге будет работать на сервере/интранете, я тестировал его с USB-накопителя, то есть просто открывал html-файл и не запускал его с сервера. (ember позволяет это сделать). - person user1525612; 29.04.2015
comment
USB-накопитель по-прежнему будет восприниматься как локальный файловый ресурс; вы либо получите зону интрасети, либо зону локального файла (в зависимости от версии IE). Точки одинаковые; это по-прежнему отдельная зона безопасности и (вероятно) будет обрабатываться так же, как и интрасеть, поэтому рекомендации по-прежнему применимы. (Есть различия, но я не думаю, что многие из них заслуживают упоминания здесь.) - person Lance Leonard; 29.04.2015