0

Если я служу страницы с помощьюЕсли я заставляю инструменты разработчика IE 8 быть «Режим браузера: IE 8» и «Режим документа: стандарты IE 7», это теперь IE 7 или IE 8?

<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible'> 

с использованием HTML 4.01 Strict, и загрузить эту страницу в IE 8, то в IE 8 в Developer Tools показывает, что он использует:

Browser Mode: IE 8  Document Mode: IE 7 Standards 

Ну тогда, является IE 8, используя частично IE 8 engine и частично IE 7 engine? Какая часть IE 8, а какая часть IE 7?

HTTP_USER_AGENT показывает, как:

Mozilla/4.0 (совместимый; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30 ; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

, так что я бы себе представить, что это не "полностью" IE 7.

ответ

1

Из-за метатега, сообщающего IE8 для эмуляции IE7, механизм компоновки (компонент браузера, используемый для визуализации страниц), изменяется, чтобы имитировать IE7. Ergo, режим документа отображается как режим стандартов IE7.

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

Так что напомним: остальная часть браузера все еще IE8; только движок макета действует как IE7.

+0

Я думал о средствах разработчика, пользователь может их изменить, это означает, что мы можем заставить его использовать этот режим и игнорировать IE = EmulateIE7? –

+0

Да, но инструменты для разработчиков в основном используются разработчиками в любом случае, и мы вынуждаем эти режимы проверять и отлаживать. Пользователи обычно не видят и не используют эту функцию. – BoltClock