Html quirks mode doctype

Использование элемента DOCTYPE в режиме Quirks

Оставьте Doctype, чтобы перевести браузеры в режим «Причуды»

Если вы разрабатывали веб-страницы более нескольких месяцев, вы, скорее всего, знаете о трудностях написания страницы, которая выглядит одинаково во всех браузерах. На самом деле это невозможно. Многие браузеры были написаны со специальными функциями, с которыми могли справиться только они. Или у них есть особые способы обработки вещей, которые отличаются от того, как их обрабатывают другие браузеры. Например:

  • Слои были созданы для использования в браузерах Netscape. Они не работают ни в каком другом браузере и фактически устарели в Netscape 6.x +.
  • Встроенные фреймы изначально создавались только для Internet Explorer и с тех пор стали частью спецификации HTML.
  • Internet Explorer 6.0 добавляет дополнительный пробел (например,
    ) вокруг тегов, если только вы не пишете содержимое div в одну (длинную) строку. (IE 6 имеет много других причуд, а также этот.)
  • Netscpe 4.7 не будет отображать таблицы, которые не написаны в правильном HTML – вместо этого он показывает пустую страницу. Это было исправлено в Netscape 6.

Проблема для разработчиков браузеров заключается в том, что им приходится создавать веб-браузеры, обратно совместимые с веб-страницами, созданными для старых браузеров. Чтобы решить эту проблему, создатели браузеров создали режимы для работы браузеров. Эти режимы определяются наличием или отсутствием элемента DOCTYPE и тем, что вызывает DOCTYPE .

Читайте также:  Java new class from name

Переключение DOCTYPE и «Режим причуд»

Если вы добавили следующий DOCTYPE на свою веб-страницу:

Современные браузеры (Android 1+, Chrome 1+, IE 6+, iOS 1+, Firefox 1+, Netscape 6+, Opera 6+, Safari 1+) интерпретируют это следующим образом:

  1. Поскольку существует правильно написанный DOCTYPE , это запускает режим стандартов.
  2. Это HTML 4.01 Переходный документ
  3. Поскольку он находится в стандартном режиме, большинство браузеров отображают контент, совместимый (или в основном совместимый) с HTML 4.01 Transitional.

И если вы добавите этот DOCTYPE в свой документ:

Это говорит современным браузерам, что вы хотите отображать страницу HTML 4.01 в строгом соответствии с DTD. Эти браузеры перейдут в режим «строгого» или «стандартного» и отобразят страницу в соответствии со стандартами. (Таким образом, для этого документа такие теги могут быть полностью проигнорированы браузером, так как элемент FONT устарел в HTML 4.01 Strict.)

Если вы полностью пропустите DOCTYPE , браузеры автоматически перейдут в режим «причуд».

В таблице ниже показано, что делают обычные браузеры, когда представлены разные общие объявления DOCTYPE .

Microsoft делает это сложнее

В Internet Explorer 6 также есть функция, заключающаяся в том, что если вы поместите что-либо выше объявления DOCTYPE , они перейдут в режим причуд. Итак, оба из этих примеров приведут IE 6 в режим причуд, даже несмотря на то, что объявления DOCTYPE говорят, что они находятся в режиме строгих стандартов:

Плюс, если вы пройдете IE6, то у вас есть «особенность», которую Microsoft добавила в IE8 и IE9: переключение элементов META и черный список сайтов. Фактически, эти две версии браузера теперь имеют до семи (!) Различных режимов:

  • IE 5,5 причудливый режим (IE 8 и 9)
  • Режим стандартов IE 7 (IE 8 и 9)
  • IE 8 почти стандартный режим (IE 8 и 9)
  • Режим стандартов IE 8 (IE 8 и 9)
  • IE 9 почти стандартный режим (IE 9)
  • Режим стандартов IE 9 (IE 9)
  • Режим XML (IE 9)

В IE 8 также введен «Режим совместимости», в котором пользователь может изменить модель рендеринга обратно в режим IE 7. Таким образом, даже если вы установите режим, который вы хотите установить, используя элементы DOCTYPE и META , ваша страница может все еще быть возвращена в менее соответствующий стандартам режим.

Что такое Quirks Mode?

Режим Quirks был создан, чтобы помочь справиться со всей странной поддержкой рендеринга и несовместимых браузеров и взломами, которые веб-дизайнеры использовали для решения этих задач. Беспокойство производителей браузеров заключалось в том, что если они переключат свои браузеры на полное соответствие спецификациям, веб-дизайнеры останутся позади. Настроив переключение DOCTYPE и «Режим причуд», это позволило веб-дизайнерам выбирать, как они хотят, чтобы браузеры отображали их HTML.

Эффекты Quirks Mode

Есть несколько эффектов, которые большинство браузеров используют в режиме Quirks:

  • В некоторых браузерах блочная модель меняется на IE 5.5 версии блочной модели в режиме причуд.
  • Некоторые браузеры не наследуют стили в таблицах
  • Режим Quirks существенно влияет на синтаксический анализ CSS и макета CSS. Если вы конвертируете страницы в стандартный режим из режима Quirks, обязательно протестируйте свой макет CSS и проведите тщательный анализ.
  • Следите за изменениями в сценариях, когда в режиме причуд. Например, Firefox изменяет способ работы атрибута id . IE8 и IE9 очень сильно изменили сценарии в режиме причуд.

Есть также разница в режиме «Почти Стандарты»:

Как выбрать DOCTYPE

Я более подробно остановлюсь в моем списке статей DOCTYPE , но вот несколько общих правил:

  1. Всегда сначала выбирайте режим стандартов. И текущий стандарт, который вы должны использовать, – это HTML5: если у вас нет особых причин избегать использования HTML5 DOCTYPE , это то, что вам следует использовать.
  2. Перейдите к строгому HTML 4.01, если вам нужно проверить устаревшие элементы или по какой-то причине хотите избежать новых функций:
  3. Если вы нарезали изображения в таблице и не хотите их исправлять, перейдите к переходному HTML 4.01:
  4. Не пишите страницы намеренно в режиме причуд. Всегда используйте DOCTYPE . Это сэкономит вам время на разработку в будущем и действительно не принесет пользы. IE6 быстро теряет популярность, и, разрабатывая для этого браузера (что по сути и является дизайном в режиме «Причуды»), вы ограничиваете себя, своих читателей и свои страницы. Если вам нужно писать для IE 6 или 7, используйте условные комментарии для их поддержки, а не переводите современные браузеры в режим причуд.

Зачем использовать DOCTYPE

Как только вы узнаете, что происходит переключение DOCTYPE этого типа, вы можете напрямую воздействовать на свои веб-страницы, используя DOCTYPE , который указывает, что браузер может ожидать от вашей страницы. , Кроме того, как только вы начнете использовать DOCTYPE , вы будете писать HTML, который будет ближе к действительности (вы все равно должны его проверить). И, написав действительный XHTML, вы поощряете производителей браузеров создавать совместимые со стандартами браузеры.

Версии браузера и режим причуд

DOCTYPE
Android, Chrome, Firefox, IE 8+, iOS, Opera 7.5+, Safari
IE 6
IE 7
Opera 7
Netscape 6

None Режим причуд Режим причуд Режим причуд
HTML 3.2
Режим причуд Режим причуд Режим причуд
HTML 4.01
Переходная Режим стандартов * Режим стандартов * Режим стандартов
Переходная Режим причуд Режим причуд Режим причуд
Строгий Режим стандартов Режим стандартов * Режим стандартов
Строгий Режим стандартов Режим стандартов * Режим стандартов
HTML5
Режим стандартов Режим стандартов * Режим причуд

Источник

Quirks Mode

In the old days of the web, pages were typically written in two versions: One for Netscape Navigator, and one for Microsoft Internet Explorer. When the web standards were made at W3C, browsers could not just start using them, as doing so would break most existing sites on the web. Browsers therefore introduced two modes to treat new standards compliant sites differently from old legacy sites.

There are now three modes used by the layout engines in web browsers: quirks mode, limited-quirks mode, and no-quirks mode. In quirks mode, layout emulates behavior in Navigator 4 and Internet Explorer 5. This is essential in order to support websites that were built before the widespread adoption of web standards. In no-quirks mode, the behavior is (hopefully) the desired behavior described by the modern HTML and CSS specifications. In limited-quirks mode, there are only a very small number of quirks implemented.

The limited-quirks and no-quirks modes used to be called «almost-standards» mode and «full standards» mode, respectively. These names have been changed as the behavior is now standardized.

How do browsers determine which mode to use?

For HTML documents, browsers use a DOCTYPE in the beginning of the document to decide whether to handle it in quirks mode or standards mode. To ensure that your page uses full standards mode, make sure that your page has a DOCTYPE like in this example:

doctype html> html lang="en"> head> meta charset="UTF-8" /> title>Hello World!title> head> body>body> html> 

The DOCTYPE shown in the example, , is the simplest possible, and the one recommended by current HTML standards. Earlier versions of the HTML standard recommended other variants, but all existing browsers today will use full standards mode for this DOCTYPE, even the dated Internet Explorer 6. There are no valid reasons to use a more complicated DOCTYPE. If you do use another DOCTYPE, you may risk choosing one which triggers almost standards mode or quirks mode.

Make sure you put the DOCTYPE right at the beginning of your HTML document. Anything before the DOCTYPE, like a comment or an XML declaration will trigger quirks mode in Internet Explorer 9 and older.

The only purpose of is to activate no-quirks mode. Older versions of HTML standard DOCTYPEs provided additional meaning, but no browser ever used the DOCTYPE for anything other than switching between render modes.

XHTML

If you serve your page as XHTML using the application/xhtml+xml MIME type in the Content-Type HTTP header, you do not need a DOCTYPE to enable standards mode, as such documents always use ‘full standards mode’. Note however that serving your pages as application/xhtml+xml will cause Internet Explorer 8 to show a download dialog box for an unknown format instead of displaying your page, as the first version of Internet Explorer with support for XHTML is Internet Explorer 9.

If you serve XHTML-like content using the text/html MIME type, browsers will read it as HTML, and you will need the DOCTYPE to use standards mode.

How do I see which mode is used?

If the page is rendered in quirks or limited-quirks mode, Firefox will log a warning to the console tab in the developer tools. If this warning is not shown, Firefox is using no-quirks mode.

The value of document.compatMode in JavaScript will show whether or not the document is in quirks mode. If its value is «BackCompat» , the document is in quirks mode. If it isn’t, it will have value «CSS1Compat» .

Found a content problem with this page?

This page was last modified on Jul 7, 2023 by MDN contributors.

Источник

Оцените статью