Utilizarea elementului DOCTYPE în modul Quirks

Lasati-o pe Doctype pentru a pune browserele in modul Quirks

Dacă ați proiectat pagini web pentru mai mult de câteva luni, sunteți cel mai probabil conștienți de dificultatea de a scrie o pagină care arată la fel în toate browserele . De fapt, este imposibil. Multe browsere au fost scrise cu caracteristici speciale pe care doar ei le-ar putea ocupa. Sau au modalități speciale de a gestiona lucruri diferite de cele ale altor browsere. De exemplu:

Problema dezvoltatorilor de browser este că trebuie să creeze browsere web compatibile cu paginile web create pentru browserele mai vechi. Pentru a rezolva această problemă, producătorii de browsere au creat moduri în care să navigheze browserele. Aceste moduri sunt definite de prezența sau absența unui element DOCTYPE și de ceea ce solicită DOCTYPE.

Comutarea DOCTYPE și "modul quirks"

Dacă introduceți în pagina dvs. de web următoarea DOCTYPE:

Browserele moderne (Android 1+, Chrome 1+, IE 6+, iOS 1+, Firefox 1+, Netscape 6+, Opera 6+, Safari 1+) ar interpreta acest lucru în modul următor:

  1. Deoarece există un DOCTYPE scris corect, acest lucru declanșează modul standard.
  2. Este un document HTML 4.01 Transitional
  3. Deoarece este în modul standard, majoritatea browserelor vor face conținutul compatibil (sau cel mai mult compatibil) cu HTML 4.01 Transitional

Și dacă puneți acest DOCTYPE în documentul dvs.:

Acest lucru îi spune browserelor moderne că doriți să afișați pagina HTML 4.01 în strictă conformitate cu DTD.

Aceste browsere vor intra în modul "strict" sau "standard" și vor face pagina în conformitate cu standardele. (Deci, pentru acest document, etichetele, cum ar fi cele ignorate de browser, deoarece elementul FONT a fost depreciat în HTML 4.01 Strict.)

Dacă lăsați complet DOCTYPE, browserele sunt automat puse în modul "quirks".

Tabelul de mai jos arată ce fac browserele obișnuite atunci când sunt prezentate cu diferite declarații comune DOCTYPE.

Microsoft face mai greu

Internet Explorer 6 are, de asemenea, o caracteristică faptul că, dacă puneți ceva deasupra declarației DOCTYPE, vor intra în modul quirks. Astfel, ambele exemple vor pune IE 6 în modul quirks, chiar dacă declarațiile DOCTYPE spun că sunt în standarde stricte:

și XHTML 1.1 DOCTYPE:

În plus, dacă treceți de IE6, atunci aveți "caracteristica" pe care Microsoft a adăugat-o în IE8 și IE9: schimbarea elementului META și listarea neagră a site-ului web. De fapt, aceste două versiuni de browser au acum până la șapte (!) Moduri diferite:

IE 8 a introdus, de asemenea, "modul de compatibilitate" unde utilizatorul ar putea alege să schimbe modelul de redare înapoi în modul IE 7. Astfel încât, chiar dacă setați modul pe care doriți să-l setați utilizând atât elementele DOCTYPE, cât și META, pagina dvs. ar putea fi încă împinsă într-un mod mai puțin compatibil cu standardele.

Ce este Quirks Mode?

Modul Quirks a fost creat pentru a ajuta la rezolvarea tuturor aspectelor de redare ciudată și neconformă a browserului și a hack-urilor folosite de designerii web pentru a face față acestor lucruri. Preocuparea pe care o aveau producătorii de browsere era că, dacă și-ar schimba browserele în conformitate cu specificațiile complete, designerii web ar fi lăsat în urmă.

Prin configurarea comutării DOCTYPE și a "Quirks Mode", designerii web au putut să aleagă modul în care ar fi dorit ca browserele să le facă HTML.

Efecte Moduri Quirks

Există mai multe efecte pe care majoritatea browserelor le utilizează în modul Quirks:

Există, de asemenea, o diferență în modul "Aproape standarde:"

Cum de a alege un DOCTYPE

Mă duc în mai multe detalii în articolul meu DOCTYPE List, dar aici sunt câteva reguli generale de degetul mare:

  1. Alegeți întotdeauna mai întâi modul standard. Și standardul pe care ar trebui să îl utilizați este HTML5:
    Cu excepția cazului în care aveți un motiv specific pentru a evita utilizarea codului HTML5 DOCTYPE, aceasta este ceea ce ar trebui să utilizați.
  2. Du-te la strict HTML 4.01 dacă aveți nevoie pentru a valida elementele moștenite sau doriți să evitați noi caracteristici dintr-un motiv oarecare:
  3. Dacă ați tăiat imagini într-o masă și nu doriți să le reparați, mergeți la HTML 4 Transitional:
  4. Nu scrieți pagini în mod deliberat în modul ciudat. Utilizați întotdeauna un DOCTYPE. Acest lucru vă va salva pe timp de dezvoltare în viitor și nu are nici un beneficiu. IE6 pierde rapid popularitatea și prin proiectarea pentru acest browser (care este, în esență, ceea ce se proiectează în modul quirks este) vă limitați singur, cititorii și paginile dvs. Dacă trebuie să scrieți pentru IE 6 sau 7, utilizați comentariile condiționale pentru a le sprijini, mai degrabă decât a forța browserele moderne în mod quirks.

De ce utilizați DOCTYPE

Odată ce știți că acest tip de comutare DOCTYPE se întâmplă, puteți afecta mai direct paginile dvs. web utilizând un DOCTYPE care indică ce se poate aștepta browserul de la pagina dvs. De asemenea, odată ce începeți să utilizați DOCTYPE, veți scrie HTML care este mai aproape de a fi valid (trebuie să îl validați în continuare). Și scriind XHTML valabil, îi încurajezi pe producătorii de browsere să construiască browsere compatibile cu standardele.

Versiunile browserului și modul Quirks

DOCTYPE Android
Crom
Firefox
IE 8+
iOS
Opera 7.5+
Safari
IE 6
IE 7
Opera 7
Netscape 6
Nici unul Modulul Quirks Modulul Quirks Modulul Quirks
HTML 3.2
Modulul Quirks Modulul Quirks Modulul Quirks
HTML 4.01
tranziţie Mod de standardizare * Mod de standardizare * Mod de standardizare
tranziţie Modulul Quirks Modulul Quirks Modulul Quirks
Strict Mod de standardizare Mod de standardizare * Mod de standardizare
Strict Mod de standardizare Mod de standardizare * Mod de standardizare
HTML5
Mod de standardizare Mod de standardizare * Modulul Quirks
* Cu acest DOCTYPE, browserele sunt aproape conforme cu standardele, dar au câteva probleme - asigurați-vă că le testați. Acest lucru este, de asemenea, cunoscut sub numele de "modul aproape de standarde".