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

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

Страница X имеет заголовок http: `X-UA-совместимый IE=EmulateIE7`
и без метатега 
и имеет тип документа: `DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"`
Страница Y имеет заголовок http: `X-UA-совместимый IE=EmulateIE7`
и имеет метатег как `meta http-equ =" X-UA-Compatible " content="IE=8"`
и имеет тип документа: `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 работает нормально.

1 ответ

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам