Режим нестандартной обработки
В старые времена веб-страницы обычно писались в двух версиях: одна для Netscape Navigator, а другая для Microsoft Internet Explorer. Когда веб-стандарты были созданы в W3C, браузеры не могли сразу начать их использовать, так как это нарушило бы работу большинства существующих сайтов в интернете. Поэтому браузеры ввели два режима, чтобы по-разному обрабатывать сайты, соответствующие новым стандартам, и старые сайты, унаследованные от предыдущих версий.
В настоящее время используются три режима, применяемые движками рендеринга веб-браузеров: режим нестандартной обработки, режим ограниченной нестандартной обработки и режим стандартной обработки. В режиме нестандартной обработки макет эмулирует поведение в Navigator 4 и Internet Explorer 5. Это необходимо для поддержки веб-сайтов, созданных до широкого распространения веб-стандартов. В режиме стандартной обработки поведение (надеюсь) соответствует ожидаемому поведению, описанному в современных спецификациях HTML и CSS. В режиме ограниченной нестандартной обработки реализовано очень мало нестандартных функций.
Режимы ограниченной нестандартной обработки и стандартной обработки ранее назывались режимом "почти-стандартов" и режимом "полных стандартов" соответственно. Эти названия были изменены, поскольку теперь поведение стандартизовано.
Как браузеры определяют, какой режим использовать?
Для документов HTML браузеры используют DOCTYPE в начале документа, чтобы определить, следует ли обрабатывать его в режиме нестандартной обработки или стандартной обработки. Чтобы убедиться, что ваша страница использует режим полных стандартов, убедитесь, что на вашей странице есть DOCTYPE, как в этом примере:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Hello World!</title> </head> <body></body> </html>
DOCTYPE, показанный в примере, <!DOCTYPE html>, является самым простым возможным и рекомендуемым текущими стандартами HTML. Более ранние версии стандарта HTML рекомендовали другие варианты, но все существующие браузеры сегодня будут использовать режим полных стандартов для этого DOCTYPE. Нет никаких оправданных причин использовать более сложный DOCTYPE. Если вы используете другой DOCTYPE, вы рискуете выбрать такой, который приведет к режиму почти-стандартов или режиму нестандартной обработки.
Поместите DOCTYPE в самом начале вашего HTML-документа, перед любым другим содержимым.
Единственная цель <!DOCTYPE html> — активировать режим стандартной обработки. Более старые версии DOCTYPE стандарта HTML предоставляли дополнительный смысл, но ни один браузер никогда не использовал DOCTYPE для чего-либо, кроме переключения между режимами рендеринга.
Также см. подробное описание о том, как разные браузеры выбирают различные режимы.
XHTML
Если вы предоставляете свою страницу как XHTML с помощью типа MIME application/xhtml+xml в заголовке HTTP Content-Type, вам не нужен DOCTYPE для включения режима стандартной обработки, так как такие документы всегда используют режим "полных стандартов".
Если вы предоставляете XHTML-подобное содержимое с помощью типа MIME text/html, браузеры будут читать его как HTML, и вам потребуется DOCTYPE для использования режима стандартной обработки.
Как узнать, какой режим используется?
Если страница отображается в режиме нестандартной обработки или ограниченной нестандартной обработки, Firefox выведет предупреждение в вкладку консоли в инструментах разработчика. Если это предупреждение не отображается, Firefox использует режим стандартной обработки.
Значение document.compatMode в JavaScript покажет, находится ли документ в режиме нестандартной обработки. Если его значение "BackCompat", документ находится в режиме нестандартной обработки. Если нет, у него будет значение "CSS1Compat".
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Quirks_Mode_and_Standards_Mode