Різна відображення HTML документів в браузері залежить від оголошеного Doctype

dd
{
margin-left:60px;
margin-right:20px;
}
dt
{
margin-left:30px;
margin-right:20px;
}

При використанні одних і тих же HTML-тегів в старих кривих браузерах і сучасних, які дотримуються стандартів (Mozilla і браузери на його основі, Mac IE 5, Windows IE 6, Safari, Opera 7 + і Konqueror 3.2) можна виявити два основні режими відображення web-сторінки. В одному випадку браузер намагається представити сторінку відповідно до рекомендацій CSS і (X) HTML. В іншому випадку відображення сторінки відбувається як в старих, далеких від стандартів браузерах. У Mozilla ці два стани відомі як "the Standards mode" і "the Quirks mode", тобто як стандартний режим і невизначений відповідно.

Криве та нестандартна поведінка старих збиткових браузерів, таких як Netscape Navigator 4.x і IE 5 для Windows називається "quirks". Іноді сторінка буває написана так, що її розмітка спочатку некоректна.

Більшість неприємностей пов'язано з неправильною розміткою та конфліктами в CSS. Інтерпретація таких кривих сторінок і стилів призводить до того, що автор, який написав її швидше за все побачить в браузері зовсім не те, що збирався зобразити. Той же, хто здатний грамотно розмітити сторінку і вміло застосувати таблицю стилів завжди отримає очікуваний результат.

Quirks Mode – Невизначена стан

При Quirks Mode в браузерах порушуються рекомендації W3C для забезпечення нормального відображення сторінок. Для різних браузерів існують різні варіанти сумісності з попередніми версіями. Отже, "Quirks mode" не єдина мета. Наприклад, Mozilla бере свій початок з Netscape 4.x, а Windows IE 6 з Windows IE 5.

Власне мета Quirks mode – коректне відображення сторінок, написаних для старих браузерів. При створенні нових, сучасних сторінок слід виконувати вимоги стандартів і рекомендацій (CSS 2.1 зокрема) і дотримуватися Standards mode.

Standards Mode – Відповідає стандартам

При Standards Mode сучасні браузери повинні однаково правильно представляти відповідну стандартам сторінку.

Almost Standards Mode – Майже відповідає стандартам

У браузерах Mozilla, Safari і Opera 7.5 ще існує третій варіант "the Almost Standards mode" (майже відповідний стандартам), який не досить суворо дотримується рекомендацій W3C. У Mac IE 5, Windows IE 6, Opera до 7.5 і Konqueror відсутня Almost Standards mode, тому що вони і так не можуть працювати відповідно до CSS2, тому вони будуть знаходитися в цьому випадку в Standards modes. Фактично, їх Standards modes це Almost Standards mode браузера Mozilla, а не повноцінний Standards modes. Важливо пам'ятати: браузери мають однакові основні стани, але навіть при однакових стану вони все одно працюють по-різному.

Старі браузери дещо як ще обробляють нестандартні теги. У сучасних браузерах некоректний HTML призведе і до неправильної роботи таблиць стилів і скриптів.

Формування логічно правильного дерева документа з некоректною розмітки потребує чимало спритності і не факт, що результат буде таким, як замислювалося, на відміну від застосування чистого і стандартного HTML. Раніше, застосуванням різних трюків вдавалося досягти більш-менш схожого відображення сторінок в різних браузерах, тому з часом, переважна більшість документів text / html в інтернеті виявилися синтаксично неправильними, тому що вони не слідували єдиного стандарту.

Деякі люди помилково вважають Standards mode режимом суворого аналізу, при цьому невірно припущення, що браузери будуть змушені суворо виконувати тільки правила синтаксису HTML, які вони будуть використовувати для оцінки коректності розмітки. Це не вірно. Браузери продовжують намагатися правильно обробляти будь-який код, навіть у разі Standards mode розмітки. (У 2000 році, до релізу Netscape 6 аналізатор Mozilla діяв тільки за правилами суворо синтаксису HTML. Але, як виявилося, стало неможливим коректно представляти створені раніше документи і від цього довелося відмовитися.)

Інша помилка пов'язана з XHTML аналізом. Деякі люди думають, що документ XHTML якось інакше аналізується браузером. Це не так. XHTML документи обслуговуються як text / html і аналізуються так само, як і HTML. У браузерах, XHTML обслуговується як text / html, але тільки з урахуванням особливостей синтаксису, А ось документи, які відповідають типу контенту XML розглядаються вже інакше, саме як XML.

Дослідження Doctype

Mozilla, Mac IE 5, Windows IE 6, Safari і Opera 7 + використовують doctype для того, щоб оцінити як розглядати розмітку документа text / html. Цей метод заснований на визначенні оголошення типу документа (або його відсутності) на початку HTML документа. (Документи, які використовують визначення типу контенту XML, завжди розглядаються в Standards mode.)

Оголошення типу документа (doctype) Включає назву (характерне для розпізнавання) кореневого елемента і посилання на DTD (document type definition – визначення типу документа), яке в свою чергу, містить інформацію про синтаксичних правилах для документа. (Теоретично, весь DTD може бути вставлений в оголошення типу документа, але на практиці використовується лише посилання на нього.) У специфікації HTML оголошення типу документа містить інформацію про версію HTML. Відсутність оголошення типу документа та інформації про його версії не дозволяє правильно обробляти цей документ.

Ні специфікація HTML 4.01, ні ISO 8879 (SGML) не говорять щось про використання оголошення типу документа як про перемикач режимів відображення розмітки. Зневага до doctype засноване на його недотримання, а також на тому, що більшість застарілих нестандартних документів не включають оголошення типу документа, або посилаються на старі DTD.

Типове оголошення типу документа містить рядок (усі її частини розділені пробілами): "<!DOCTYPE", Загальний ідентифікатор кореневого елементу ("HTML"), Рядок"PUBLIC", Загальний ідентифікатор DTD в лапках, може бути системний ідентифікатор (URL) того ж DTD і символ">". Оголошення типу документа має розміщуватися перед початковим тегом кореневого елемента.

Трактування деяких Doctype

У наведеній таблиці Quirks Mode, Standards Mode і Almost Standards Mode позначені відповідно Q, S і A. Коли у браузера є тільки два режими – Standards Mode позначений як "S" у разі визначення висоти рядка у клітинці таблиці як у Mozilla's Standards Mode, і як "A" у разі визначення висоти рядка у клітинці таблиці як у Mozilla's Almost Standards Mode.

У шапці таблиці використовуються наступні соткращенія:

NS6
Mozilla 0.6 … 0.9.4 і Netscape 6.0 … 6.2.3
Old Moz
Mozilla 0.9.5 аж до 1.1 alpha і Mozilla 1.0
Moz і Safari
Mozilla 1.0.1, Mozilla 1.1 beta і вище, Firefox і Netscape 7, Safari v73 aka. 0.9 аж до Safari v125.11 aka. 1.2.4
Opera 7.5
Opera 7.5
Opera 7.10
Opera 7.107.23
IE 6 і Opera 7.0
Windows IE 6 and Opera 7.0…7.03
Mac IE 5
Mac IE 5.0…5.2.3
Konq 3.2
Konqueror 3.2.2 … 3.3 (ймовірно також 3.1 … 3.2.1; не підтверджено)
Doctype NS6 Old Moz Moz і Safari Opera 7.5 Opera 7.10 IE 6 і Opera 7.0 Mac IE 5 Konq 3.2
Не оголошений Q Q Q Q Q Q Q Q
До HTML 4.0 doctype <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> Q Q Q Q Q Q Q Q
HTML 4.0 Strict doctype без URL <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> S S S S A A A A
HTML 4.01 Strict doctype без URL <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> S S S S A A Q A
HTML 4.0 Strict doctype з URL <! DOCTYPE HTML PUBLIC "- / / W3C / / DTD HTML 4.0 / / EN" "http://www.w3.org/TR/html4/strict.dtd"> S S S S A A A A
HTML 4.01 Strict doctype з URL <! DOCTYPE HTML PUBLIC "- / / W3C / / DTD HTML 4.01 / / EN" "http://www.w3.org/TR/html4/strict.dtd"> S S S S A A A A
HTML 4.0 Transitional doctype без URL <! DOCTYPE HTML PUBLIC "- / / W3C / / DTD HTML 4.0 Transitional / / EN"> Q Q Q Q Q Q Q Q
HTML 4.01 Transitional doctype без URL <! DOCTYPE HTML PUBLIC "- / / W3C / / DTD HTML 4.01 Transitional / / EN"> Q Q Q Q Q Q Q Q
HTML 4.01 Transitional doctype з URL http://www.w3.org/TR/html4/loose.dtd <! DOCTYPE HTML PUBLIC "- / / W3C / / DTD HTML 4.01 Transitional / / EN" "http://www.w3.org/TR/html4/loose.dtd"> S S A A A A A Q
HTML 4.01 Transitional doctype з URL http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd <! DOCTYPE HTML PUBLIC "- / / W3C / / DTD HTML 4.01 Transitional / / EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd"> Q S A A A A A Q
HTML 4.0 Transitional doctype з URL <! DOCTYPE HTML PUBLIC "- / / W3C / / DTD HTML 4.0 Transitional / / EN" "http://www.w3.org/TR/html4/loose.dtd"> Q Q Q A A A A Q
XHTML 1.0 Strict doctype без XML оголошення <! DOCTYPE html PUBLIC "- / / W3C / / DTD XHTML 1.0 Strict / / EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> S S S S A A A A
XHTML 1.0 Transitional doctype без XML оголошення <! DOCTYPE html PUBLIC "- / / W3C / / DTD XHTML 1.0 Transitional / / EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> S S A A A A A Q
XHTML 1.0 Strict doctype разом з 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">
S S S S A Q A Q
XHTML 1.0 Transitional doctype з 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">
S S A A A Q A Q
ISO HTML версія 2000 doctype, коротка форма <!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HTML//EN"> Q S S Q Q Q Q Q
ISO HTML версія 2000 doctype, довга форма <! DOCTYPE HTML PUBLIC "ISO / IEC 15445:2000 / / DTD HyperText Markup Language / / EN"> Q S S S A A A Q
ISO HTML версія 1999 doctype, коротка форма <!DOCTYPE HTML PUBLIC "ISO/IEC 15445:1999//DTD HTML//EN"> S S S Q Q Q Q Q
ISO HTML версія 1999 doctype, довга форма <! DOCTYPE HTML PUBLIC "ISO / IEC 15445:1999 / / DTD HyperText Markup Language / / EN"> S S S S A A A Q

XHTML Basic (з оголошенням XML) і XHTML 1.1 (з оголошенням XML) відсутні в таблиці, тому що така поведінка doctype впливає тільки на відображення сторінок документів представлених як text / html але, у разі text / html, не може бути використано XHTML Basic і XHTML 1.1. Однак, якщо ці документи обробляються як text / html, то поведінка браузера в залежності від doctype буде подібно XHTML 1.0 Strict. Тобто, Windows IE 6 застосовує цей quirks mode навіть при наявності XML оголошення.

Вибір Doctype

Наведемо кілька простих рекомендацій з вибору doctype для документа типу text / html.

Документ міститиме нестандартні теги та / або в розмітці будуть застосовуватися різні нестандартні ситуації. (Створення подібних сторінок – рідкісна гидота.)
Doctype можна не вказувати
Документ дійсний як HTML 4.01
Transitional (може містити нерекомендуемие (deprecated) елементи розмітки) і

працює з CSS2 блокової моделлю (для сумісності із заснованими на Mozilla браузерами це зробить "the full standards mode").

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Документ дійсний як HTML 4.01 Strict і працює з CSS2 блокової моделлю.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

При використанні XHTML doctype слід пам'ятати, що наявність XML оголошення переводить Windows IE 6 у Quirks mode. У чому легко можна переконатися клікнувши по тексту нижче.

Клік сюди для перевірки стану браузера

Перевірити свій HTML документ можете додавши в нього наступний код:

<script type="text/javascript">//<![CDATA[
alert ('Цей документ браузер буде аналізувати як: \ n' + document.compatMode);
//]]></script>

Автор: Андрій Баранов
Джерело: http://xhtml.ru/2005/05/05/doctype_quirks/

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*