Будут ли какие-либо различия в странице, отображаемой в IE7, по сравнению с той же страницей, отображаемой в стандартном режиме IE7 в браузере IE8?

У меня есть страница "Y" в iframe на странице "X" (родительская).

Page X has http header : `X-UA-Compatible   IE=EmulateIE7`
and no meta tag 
and has doctype : `DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"`
Page Y has http header : `X-UA-Compatible   IE=EmulateIE7`
and has meta tag as `meta http-equiv="X-UA-Compatible" content="IE=8"`
and has doctype : `DOCTYPE html`

Я вижу некоторые различия в поведении страницы Y при отображении в браузере IE7 по сравнению с той же страницей, отображаемой в стандартном режиме IE7 в браузере IE8 (т.е. режим браузера: ie8, режим документа: стандартный режим IE7).

Я пробовал запустить js javascript:window.alert('You are in ' + (document.compatMode==='CSS1Compat'?'Standards':'Quirks') + ' mode.'), там написано «Стандартный режим».

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

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

PS: Под разницей в поведении я имею в виду, когда я наводил курсор на строку в сетке jquery, изображение в одном из td исчезает, тогда как в IE7 работает нормально.


person code.tweetie    schedule 04.11.2013    source источник
comment
Даже некоторые комментарии помогут разобраться в проблеме. Есть какие-нибудь намеки?   -  person code.tweetie    schedule 04.11.2013


Ответы (1)


Будут ли какие-либо различия в странице, отображаемой в IE7, по сравнению с той же страницей, отображаемой в стандартном режиме IE7 в браузере IE8?

Прямой ответ: Да, будет. Между ними есть известные различия, поэтому считается плохим проводить тестирование IE-версии в режиме совместимости.

Проблема в том, что «режим совместимости» фактически не использует механизм рендеринга IE7. Он использует механизм рендеринга IE8 (или какую бы версию IE вы ни использовали), но с внутренними переключателями, настроенными для изменения поведения, имитирующего IE7. Он разработан так, чтобы выглядеть одинаково, но это не один и тот же механизм, и он не во всех случаях ведет себя одинаково.

Несколько лет назад я был сильно пойман с одной из ошибок в режиме IE8 IE7. Это потеряло у нас несколько дней времени разработчиков, пытающихся отладить его, пока мы не выяснили, что происходит.

Единственное разумное решение - любой ценой избегать режима совместимости. Установите флаг X-UA-Compatible на IE=edge; заставить все версии IE использовать наилучший из доступных режимов.

Режим совместимости предназначен для сайтов, которые хотят придерживаться своего существующего кода; которые хотят обновить свою версию IE, но у них нет времени на исправление кода. К сожалению, ошибки в режиме совместимости таковы, что на самом деле проще просто исправить код для работы с обновленной версией IE.

Кстати, вы упомянули вопрос о "Quirks mode" и в тегах. Важно понимать, что вы видите не режим причуд. Это может быть странное поведение, но на самом деле это не режим Quirks. Сам по себе режим Quirks - это совсем другое (в основном это режим совместимости с IE5, а вы действительно этого не хотите). Он вызывается отсутствующим или недопустимым DOCTYPE, но вы используете допустимые типы документов, так что это нормально.

person Spudley    schedule 04.11.2013