Режим причуд
HTML |
---|
Сравнения |
В вычислительной сфере режим совместимости — это подход, используемый веб-браузерами для обеспечения обратной совместимости с веб-страницами, разработанными для старых веб-браузеров, вместо строгого соблюдения веб-стандартов в стандартном режиме . С тех пор это поведение было систематизировано, поэтому то, что раньше было стандартным режимом, теперь называется просто режимом без особенностей .
Обзор
[ редактировать ]Структура и внешний вид веб-страницы описываются комбинацией двух стандартизированных языков:
- HTML — язык разметки , разработанный для использования в Интернете и описывающий структуру и содержимое страницы; и
- CSS — обобщенный язык таблиц стилей , который определяет, как страница должна отображаться на различных носителях (визуальные стили для отображения на экране, стили печати, используемые при печати страницы, звуковые стили, используемые при чтении страницы вслух программой чтения с экрана и т. д.). .).
Однако большинство старых веб-браузеров либо не полностью реализовали спецификации этих языков, либо были разработаны до окончательной доработки спецификаций ( Microsoft Internet Explorer версии 5.0 для платформы Macintosh , выпущенный в 2000 году, был первым крупным веб-браузером с полной поддержкой например, для CSS уровня 1). [1] В результате многие старые веб-страницы были созданы с учетом неполных или неправильных реализаций старых браузеров и будут отображаться так, как задумано, только при обработке таким браузером.
Поддержка стандартизированных HTML и CSS в основных веб-браузерах значительно возросла, но большой объем устаревших документов, основанных на особенностях старых браузеров, представляет собой препятствие для разработчиков браузеров, которые хотят улучшить поддержку стандартизированных HTML и CSS, а также хотите сохранить обратную совместимость со старыми, нестандартизированными страницами. Кроме того, многие новые веб-страницы продолжают создаваться старым способом, поскольку обходные пути совместимости, предложенные разработчиками браузеров, означают, что понимание стандартизированных методов не является строго необходимым.
Чтобы обеспечить совместимость с максимально возможным количеством веб-страниц, современные веб-браузеры обычно разрабатываются с несколькими режимами рендеринга: в «режиме без особенностей» страницы отображаются в соответствии со спецификациями HTML и CSS, а в «режиме с особенностями» предпринимаются попытки эмулировать поведение старых браузеров. Некоторые браузеры (например, основанные на Mozilla от механизме рендеринга Gecko или Internet Explorer 8 в строгом режиме ) также используют «почти стандартный» режим, который пытается найти компромисс между ними, реализуя одну особенность для размера ячеек таблицы, в то же время соответствуя в остальном. спецификациям. [2]
Различия режимов и примеры
[ редактировать ]Одним из заметных различий между режимами с причудами и режимами без особенностей является обработка ошибки блочной модели CSS Internet Explorer . До версии 6 Internet Explorer использовал алгоритм определения ширины поля элемента, который противоречил алгоритму, подробно описанному в спецификации CSS, и из-за популярности Internet Explorer было создано множество страниц, основанных на этом нестандартном алгоритме. Начиная с версии 6, Internet Explorer использует алгоритм спецификации CSS при рендеринге в режиме совместимости и использует предыдущий нестандартный алгоритм при рендеринге в режиме совместимости. [ нужна ссылка ]
Еще одним заметным отличием является вертикальное выравнивание определенных типов встроенного контента; многие старые браузеры выравнивали изображения по нижней границе содержащего их блока, хотя спецификация CSS требует, чтобы они были выровнены по базовой линии текста внутри блока. В режиме без особенностей браузеры на основе Gecko будут выравниваться по базовой линии, а в режиме с особенностями — по нижнему краю. [3]
Кроме того, многие старые браузеры не реализовали наследование стилей шрифтов внутри таблиц; в результате стили шрифтов пришлось указывать один раз для документа в целом и еще раз для таблицы, хотя спецификация CSS требует, чтобы стиль шрифта был унаследован в таблице. Если размеры шрифта указаны в относительных единицах, совместимый со стандартами браузер унаследует базовый размер шрифта, а затем применит относительный размер шрифта в таблице: например, страница, на которой объявлен базовый размер шрифта 80%, и шрифт таблицы. Размер 80% (чтобы обеспечить размер 80% в браузерах, которые не наследуют должным образом размеры шрифтов) в браузере, совместимом со стандартами, будет отображать таблицы с размером шрифта 64% (80% от 80%). В результате браузеры обычно не наследуют размеры шрифтов в таблицах в режиме совместимости. [4]
Ограниченный режим причуд
[ редактировать ]третий режим совместимости, известный как «режим с ограниченными возможностями» (ранее «почти стандартный режим» или «строгий режим»), который поддерживает «традиционный» вертикальный размер ячеек таблицы в соответствии со спецификацией CSS2 В этих браузерах реализован : Safari , Opera 7.5 (и более поздних версий), все браузеры на базе Gecko , начиная с 1.0.1 (например, Firefox ) и Internet Explorer 8 . [2]
Рендеринг в режиме «Почти стандарт» соответствует режиму «Стандарт» во всех деталях, кроме одной. Расположение изображений внутри ячеек таблицы обрабатывается так же, как работает режим «причуд», который вполне соответствует устаревшим браузерам, таким как Internet Explorer 7 (и более ранним версиям). Это означает, что макеты с нарезанными изображениями в таблицах с меньшей вероятностью развалятся в браузерах в режиме «причуды» или «почти стандарты», а не в режиме «стандарты». [5]
Запуск различных режимов рендеринга
[ редактировать ]Чаще всего браузеры определяют, какой режим рендеринга использовать, на основе наличия объявления типа документа на странице; если присутствует полный DOCTYPE, браузер будет использовать режим совместимости, а если он отсутствует, браузер будет использовать режим совместимости. Например, веб-страница, начинающаяся со следующего DOCTYPE, активирует режим без особенностей:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
Следующий DOCTYPE синтаксически недействителен и содержит ключевое слово общедоступного идентификатора «PUBLIC», но не содержит общедоступного идентификатора (указывающего имя используемой версии HTML), а также не имеет URL-адреса HTML системного идентификатора определения типа документа . Это активирует режим причуд:
<!DOCTYPE html PUBLIC>
Кроме того, веб-страница, которая вообще не содержит DOCTYPE, будет отображаться в режиме совместимости.
Заметным исключением из этого правила является Microsoft браузер Internet Explorer 6 , который отображает страницу в режиме совместимости, если DOCTYPE предшествует пролог XML , независимо от того, указан ли полный DOCTYPE. Таким образом, страница XHTML , начинающаяся со следующего кода, будет отображаться в режиме совместимости с помощью IE 6:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Вышеупомянутое полезно в некоторой степени, поскольку его можно использовать для запуска режима совместимости только в IE 6.
Режим Quirks в любой версии IE также будет запущен, если что-либо предшествует DOCTYPE. Например, если гипертекстовый документ содержит комментарий, пробел или любой тег перед объявлением DOCTYPE, IE будет использовать режим совместимости:
<!-- This comment will put IE 6, 7, 8, and 9 in quirks mode -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
Проблема с объявлением XML была исправлена в версии 7 Internet Explorer, в которой пролог XML просто игнорируется. [6] Однако для максимальной совместимости с существующими и старыми веб-браузерами Консорциум World Wide Web , который поддерживает спецификацию XHTML, предлагает авторам документов XHTML рассмотреть возможность исключения объявления XML. [7]
Сравнение типов документов
[ редактировать ]Анри Сивонен составил список различных типов документов и того, как они обрабатываются в наиболее распространенных браузерах, показывая, отображаются ли страницы в режиме Quirks , Standards или Почти стандартном режиме. Критерием, используемым для «Почти стандартного режима», является рендеринг нестандартной высоты ячейки таблицы. Эта таблица применима к контенту, обслуживаемому с типом контента text/html. Содержимое, обслуживаемое с помощью приложения Content-Type application/xhtml+xml, отображается в стандартном режиме в Chrome, Firefox, Internet Explorer 9, Safari и Opera. Internet Explorer 6, 7 и 8 не поддерживают приложение Content-Type/xhtml+xml. [2]
Тип документа | НС6 | Мозилла 0.9.5-1.0 | ИЕ 8+ Firefox Хром Сафари Опера 7.5+ Нетскейп 7+ Мозилла 1.0.1+ Конг 3.5+ HTML5 спецификация |
ИЕ 7 Опера 7.10 |
ИЕ 6 Опера 7.0 |
Mac IE 5 | Конг 3.2 | |||
---|---|---|---|---|---|---|---|---|---|---|
Никто | вопрос | вопрос | вопрос | вопрос | вопрос | вопрос | вопрос | |||
HTML 2 | ||||||||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
|
вопрос | вопрос | вопрос | вопрос | вопрос | вопрос | вопрос | |||
HTML 3 | ||||||||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN//">
|
вопрос | вопрос | вопрос | вопрос | вопрос | вопрос | вопрос | |||
HTML 3.2 | ||||||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
вопрос | вопрос | вопрос | вопрос | вопрос | вопрос | вопрос | |||
HTML 4.01 | ||||||||||
Строгий | с системным идентификатором <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
С | С | С | А | А | А | А | ||
без системного идентификатора <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
С | С | С | А | А | вопрос | А | |||
Переходный | с системным идентификатором <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
С | С | А | А | А | А | вопрос | ||
без системного идентификатора <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
вопрос | вопрос | вопрос | вопрос | вопрос | вопрос | вопрос | |||
HTML5 | ||||||||||
<!DOCTYPE html>
|
вопрос | С | С | А | А | А | ? | |||
XHTML базовый | ||||||||||
с системным идентификатором и без декларации XML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
|
С | С | С | А | А | А | А | |||
XHTML 1.0 | ||||||||||
Строгий | с системным идентификатором и декларацией XML <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
С | С | С | А | вопрос | А | вопрос | ||
с системным идентификатором и без XML-декларации <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
С | С | С | А | А | А | А | |||
без системного идентификатора и без декларации XML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
|
С | С | С | А | А | А | ? | |||
Переходный | с системным идентификатором и с декларацией XML <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
С | С | А | А | вопрос | А | вопрос | ||
с системным идентификатором и без XML-декларации <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
С | С | А | А | А | А | вопрос | |||
без системного идентификатора и без декларации XML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
|
С | С | А | А | А | А | ? | |||
XHTML 1.1 | ||||||||||
с системным идентификатором и XML-объявлением <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
С | С | С | А | вопрос | А | вопрос | |||
с системным идентификатором и без декларации XML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
С | С | С | А | А | А | А | |||
Тип документа | НС6 | Мозилла 0.9.5-1.0 | ИЕ 8+ Firefox Хром Сафари Опера 7.5+ Нетскейп 7+ Мозилла 1.0.1+ Конг 3.5+ HTML5 спецификация |
ИЕ 7 Опера 7.10 |
ИЕ 6 Опера 7.0 |
Mac IE 5 | Конг 3.2 |
Проверка режима
[ редактировать ]В большинстве браузеров объектной модели документа расширение document.compatMode указывает режим рендеринга текущей страницы. В стандартном режиме и почти стандартном режиме document.compatMode содержит значение «CSS1Compat», а в режиме совместимости оно равно «BackCompat». [8]
Кроме того, в Mozilla Firefox и Opera режим рендеринга, используемый для данной страницы, указывается в информационном окне «Информация о странице».
Ссылки
[ редактировать ]- ^ «Каскадные таблицы стилей: CSS-браузеры» . Консорциум Всемирной паутины . 19 декабря 2001 года . Проверено 27 мая 2007 г.
- ^ Jump up to: а б с Сивонен, Анри. «Активация режимов браузера с помощью Doctype» . Проверено 15 марта 2011 г.
- ^ «Изображения, таблицы и загадочные пробелы» . Центр разработчиков Mozilla. Архивировано из оригинала 22 мая 2017 года . Проверено 27 мая 2007 г.
- ^ «Исправление наследования таблиц в режиме совместимости» . Центр разработчиков Mozilla. Архивировано из оригинала 3 марта 2016 года . Проверено 27 мая 2007 г.
- ^ «Режим «Почти стандарт» Геккона» . Центр разработчиков Mozilla. Архивировано из оригинала 3 июня 2004 года . Проверено 27 мая 2007 г.
- ^ Уилсон, Крис (15 августа 2005 г.). «Пролог <?xml>, строгий режим и XHTML в IE» . IEBlog . MSDN . Проверено 27 мая 2007 г.
- ^ «Руководство по совместимости HTML» . XHTML 1.0 — расширяемый язык разметки гипертекста (второе издание) . Консорциум Всемирной паутины . 1 августа 2002 года . Проверено 14 февраля 2009 г.
- ^ Кох, Питер-Пол (2 февраля 2009 г.). "Разнообразный" . Совместимость W3C DOM — HTML . Режим причуд . Проверено 14 февраля 2009 г.
Внешние ссылки
[ редактировать ]- Уровень жизни в режиме «Причуды»
- Служба проверки разметки W3C
- Тестирование обработки типов документов в браузере
- Quirksmode.org: режим Quirks и строгий режим
- Букмарклет, сообщающий о режиме документа
- Эрик Мейер о CSS: выбор режима рендеринга
- Объяснение MDC об анализе DOCTYPE Mozilla. Архивировано 13 октября 2016 г. на Wayback Machine.
- Документация по режиму совместимости в браузерах на базе Mozilla
- Объяснение Opera Software режима совместимости в их браузере
- Что происходит в режиме «Причуды»?