Режим сумісності (Quirks Mode) та стандартний режим (Standards Mode) - HTML, MDN
На самому початку веб-сторінки зазвичай писалися у двох версіях: одна для браузера Netscape Navigator, інша для браузера Microsoft Internet Explorer. Коли W3C було створено нові веб стандарти, браузери не могли їх відразу використовувати, оскільки це могло призвести до некоректного відображення більшості існуючих сайтів. Для правильного відображення застарілих сайтів та сайтів, що підтримують нові стандарти, браузерами було розроблено два режими відображення.
На сьогоднішній день існує три режими відображення, які використовуються двигунами розмітки (layout engines) браузерів: режим сумісності (quirks mode), частково стандартний (almost standards mode) і стандартний режим (full standards mode). У режимі сумісності (quirks mode), розмітка емулює нестандартну поведінку браузерів Navigator 4 та Internet Explorer 5. Цей режим необхідний для підтримки сайтів, створених до початку широкого застосування веб-стандартів. У стандартному режимі (full standards mode) поведінка браузера відповідає (будемо сподіватися) описаному в специфікаціях HTML і CSS. У частково стандартному режимі (almost standards mode) реалізовано лише незначну кількість так званих "диванок" (quirks).
Як браузери розуміють, який режим використовувати?
Браузери використовують тег DOCTYPE, щоб визначити, у якому режимі обробляти документ. Для відображення сторінки в стандартному режимі необхідно додати тег DOCTYPE до HTML-коду сторінки як показано в прикладі нижче:
Тег DOCTYPE, вказаний у прикладі, - найпростіший спосіб забезпечити стандартний режим відображення; використання цього тегу рекомендовано стандартом HTML5. Для попередніх версій HTML рекомендованоінші варіанти, але всі існуючі на даний момент браузери використовують такий тег DOCTYPE для відображення сторінки в стандартному режимі, навіть Internet Explorer 6. На сьогоднішній день не існує вагомих причин для більш складного тегу DOCTYPE. Використання будь-якого іншого тега DOCTYPE може призвести до переключення браузера в частково стандартний режим відображення або сумісність.
У стандарті HTML5 тег DOCTYPE використовується виключно для активації стандартного режиму відображення. Попередні версії HTML надавали додаткового значення використанню тега DOCTYPE, але браузери використовували тег DOCTYPE виключно для перемикання між сумісним режимом і стандартним режимом.
Якщо сторінка написана у форматі XHTML із зазначенням типу MIME application/xhtml+xml у заголовку Content-Type , то не потрібно вказувати DOCTYPE для активації стандартного режиму, оскільки подібні документи завжди відображаються у стандартному режимі. Важливо мати на увазі, що Internet Explorer 8 замість контенту такої сторінки відображає діалогове вікно завантаження як невідомого формату, оскільки підтримка XHTML реалізована в Internet Explorer, починаючи з 9 версії.
Якщо сторінка написана в форматі XHTML з використанням типу MIME text/html , браузер інтерпретуватиме його як HTML, тому для використання браузером стандартного режиму відображення необхідно вказати тег DOCTYPE.
Як дізнатись, який режим використовується?
У Firefox необхідно в контекстному меню "Інформація про сторінку" (View Page Info) перевірити "Тип візуалізації" (Render Mode).
В Internet Explorer через F12 перевірити Тип документа (Document Mode).