Будут ли какие-либо различия в странице, отображаемой в 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, но вы используете допустимые типы документов, так что это нормально.