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:
- Straturile au fost create pentru a fi utilizate în browserele Netscape. Ele nu funcționează în niciun alt browser și, de fapt, au fost depreciate în Netscape 6.x +.
- Cadrele inline au fost create inițial numai pentru Internet Explorer și au devenit parte din specificația HTML.
- Internet Explorer 6.0 adaugă un spațiu suplimentar (cum ar fi
) în jurul tagurilor, cu excepția cazului în care scrieți conținutul liniei div all pe o singură linie (lungă). (IE 6 are multe alte ciudățenii, precum și acest lucru.) - Netscpe 4.7 nu va afișa tabele care nu sunt scrise în HTML corect - în schimb, arată o pagină necompletată. Acest lucru a fost stabilit în Netscape 6.
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:
- Deoarece există un DOCTYPE scris corect, acest lucru declanșează modul standard.
- Este un document HTML 4.01 Transitional
- 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:
- Mod IE 5.5 quirks (IE 8 și 9)
- Modul standard IE 7 (IE 8 și 9)
- Modul IE 8 aproape standard (IE 8 și 9)
- Modul standard IE 8 (IE 8 și 9)
- Modul IE 9 aproape standard (IE 9)
- Modul standard IE 9 (IE 9)
- Modul XML (IE 9)
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:
- În unele browsere, modelul casetei se modifică la versiunea IE 5.5 a modelului cutie în modul quirks.
- Unele browsere nu moștenesc stiluri în tabele
- Modurile Quirks afectează în mod drastic parsarea layout-ului CSS și CSS, dacă transformați paginile în modul standard din modul quirks, asigurați-vă că testați aspectul CSS și analizați extensiv.
- Urmăriți modificările aduse scriptului în modul quirks. Firefox modifică modul în care funcționează atributul id, de exemplu. IE8 și IE9 au schimbări foarte drastice în scripting în modul quirks.
Există, de asemenea, o diferență în modul "Aproape standarde:"
- Înălțimea celulelor de masă cu numai imagini din interior este calculată diferit față de modul standard.
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:
- 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.
- 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:
- Dacă ați tăiat imagini într-o masă și nu doriți să le reparați, mergeți la HTML 4 Transitional:
- 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". |