Nechte okno Doctype, aby se prohlížeče dostali do režimu Quirks
Pokud navrhujete webové stránky déle než několik měsíců, s největší pravděpodobností znáte potíže s psaním stránky, která vypadá stejně ve všech prohlížečích . Ve skutečnosti to není možné. Mnoho prohlížečů bylo napsáno se speciálními vlastnostmi, které dokázaly zvládnout pouze. Nebo mají speciální způsoby, jak se vypořádat s věcmi, které se liší od toho, jak se s nimi zacházejí ostatní prohlížeče. Například:
- Vrstvy byly vytvořeny pro použití v prohlížečích Netscape. Nepracují v žádném jiném prohlížeči a ve skutečnosti jsou v Netscape 6.x + zastaralé.
- Inline rámce byly původně vytvořeny pouze pro aplikaci Internet Explorer a od té doby se stávají součástí specifikace HTML.
- Internet Explorer 6.0 přidává další místo (například
) obklopující značky, pokud nepíšete obsah diviny na jednu (dlouhou) řádek. (IE 6 má mnohem víc, ale také toto.) - Netscpe 4.7 nezobrazí tabulky, které nejsou zapsány ve správném HTML - místo toho se zobrazí prázdná stránka. To bylo opraveno v Netscape 6.
Problémem pro vývojáře prohlížeče je to, že musí vytvářet webové prohlížeče, které jsou zpětně kompatibilní s webovými stránkami postavenými pro starší prohlížeče. Za účelem vyřešení tohoto problému vytvořili výrobci prohlížečů režimy pro provoz prohlížečů. Tyto režimy jsou definovány přítomností nebo nepřítomností prvku DOCTYPE a tím, co volá DOCTYPE.
Přepínání DOCTYPE a režim "Quirks"
Pokud na své webové stránce umístíte následující DOCTYPE:
Moderní prohlížeče (Android 1+, Chrome 1+, IE 6+, iOS 1+, Firefox 1+, Netscape 6+, Opera 6+, Safari 1+) by to interpretovali následujícím způsobem:
- Protože je správně napsaný DOCTYPE, spustí se standardní režim.
- Je to přechodový dokument HTML 4.01
- Protože je to v normálním režimu, většina prohlížečů bude kompatibilní s obsahem (nebo většinou kompatibilní) s jazykem HTML 4.01 Transitional
A pokud vložíte tento DOCTYPE do vašeho dokumentu:
To řekne moderním prohlížečům, že chcete zobrazit stránku HTML 4.01 v souladu s DTD.
Tyto prohlížeče přejdou do režimu "přísné" nebo "standardní" a budou zobrazovat stránku v souladu s normami. (Takže pro tento dokument mohou tagy takového prohlížeče zcela ignorovat, protože prvek FONT byl zastaral v HTML 4.01 Strict.)
Pokud necháte DOCTYPE úplně, prohlížeče se automaticky přepnou do režimu "quirks".
Níže uvedená tabulka ukazuje, co běžné prohlížeče dělají při prezentaci s různými běžnými deklaracemi DOCTYPE.
Microsoft dělá to těžší
Aplikace Internet Explorer 6 má také funkci, že pokud položíte něco nad deklarací DOCTYPE, přejdou do režimu quirks. Takže oba tyto příklady uvedou IE 6 do režimu quirks, přestože deklarace DOCTYPE říkají, že jsou v přísném standardu:
a XHTML 1.1 DOCTYPE:
Navíc, pokud se dostanete kolem IE6, pak máte "funkci", kterou společnost Microsoft přidala v IE8 a IE9: přepínání prvků META a seznam blacklistů na webu. Ve skutečnosti mají tyto dvě verze prohlížečů až sedm (!) Různých režimů:
- Režim IE 5.5 quirks (IE 8 a 9)
- Norma IE 7 (IE 8 a 9)
- IE 8 téměř standardní režim (IE 8 a 9)
- Režim IE 8 (IE 8 a 9)
- IE 9 téměř standardní režim (IE 9)
- IE 9 standardní režim (IE 9)
- Režim XML (IE 9)
IE 8 také uvedl "režim kompatibility", kde se uživatel může rozhodnout změnit model vykreslování zpět do režimu IE 7. Takže i když nastavíte režim, který chcete nastavit pomocí prvků DOCTYPE a META, může být stránka stále tlačena zpět do režimu, který je méně kompatibilní s normami.
Co je režim Quirks?
Režim Quirks byl vytvořen, aby pomohl vypořádat se se všemi podivnými vykreslování a nekompatibilní podporou prohlížečů a hacků, které používali weboví návrháři k řešení těchto věcí. Obavy, že výrobci prohlížečů měli, bylo, že kdyby přepnuli prohlížeče na plnou specifikaci, budou weboví návrháři zanecháni.
Nastavením přepínače DOCTYPE a režimu Quirks umožnilo webovým návrhářům zvolit si, jakým způsobem chtějí prohlížeče vykreslit jejich HTML.
Quirks Mode Effects
Existuje několik efektů, které většina prohlížečů používá v režimu Quirks:
- V některých prohlížečích se model krabice změní na verzi IE 5.5 modelu krabice v režimu quirks.
- Některé prohlížeče nedělují styly do tabulek
- Režim Quirks výrazně ovlivňuje rozložení rozvržení CSS a CSS, pokud přeměňujete stránky na standardní režim z režimu quirks, nezapomeňte otestovat rozvržení CSS a rozsáhle analyzovat.
- Sledujte změny skriptování v režimu quirks. Firefox mění způsob, jakým funguje například atribut id. IE8 a IE9 mají velmi dramatické změny v skriptování v režimu quirks.
K dispozici je také rozdíl v režimu "téměř standardů":
- Výška buňky tabulky s vnitřními snímky je vypočtena odlišně od standardního režimu.
Jak vybrat DOCTYPE
Jdu se podrobněji v mém článku DOCTYPE seznam, ale zde jsou některé obecné pravidla palce:
- Nejprve zvolte režim standardů. A současný standard, který byste měli používat, je HTML5: Pokud nemáte konkrétní důvod, abyste se vyhnuli používání dokumentu HTML5 DOCTYPE, je to to, co byste měli používat.
- Přejděte na přísné HTML 4.01, pokud potřebujete ověřit starší prvky nebo chcete z nějakého důvodu vyhnout se novým funkcím:
- Pokud jste v tabulce nakrájeli obrázky a nechcete je opravovat, přejděte na položku Přechodné HTML 4.01:
- Nepřipište stránky úmyslně do režimu quirks. Vždy používejte DOCTYPE. To vám v budoucnu ušetří na vývojovém čase a opravdu nemá žádný užitek. IE6 rychle ztrácí popularitu a tím, že navrhuje pro tento prohlížeč (což je v podstatě to, co navrhuje v režimu quirks), omezujete se, své čtenáře a vaše stránky. Pokud potřebujete napsat pro IE 6 nebo 7, použijte podmíněné komentáře k jejich podpoře, nikoliv přimět moderní prohlížeče k režimu quirks.
Proč používat DOCTYPE
Jakmile zjistíte, že se tento typ přepínání DOCTYPE děje, můžete ovlivnit vaše webové stránky přímo pomocí DOCTYPE, který označuje, co může prohlížeč od vaší stránky očekávat. Také, jakmile začnete používat DOCTYPE, budete psát HTML, který je blíže k platné (měli byste ji ještě potvrdit). A psaním platné XHTML doporučujete výrobcům prohlížečů vytvářet prohlížeče kompatibilní s normami.
Režimy prohlížeče a režimu Quirks
DOCTYPE | Android Chrome Firefox IE 8+ iOS Opera 7.5+ Safari | IE 6 IE 7 Opera 7 | Netscape 6 |
---|---|---|---|
Žádný | Režim Quirks | Režim Quirks | Režim Quirks |
HTML 3.2 | |||
Režim Quirks | Režim Quirks | Režim Quirks | |
HTML 4.01 | |||
Přechodné | Režim standardů * | Režim standardů * | Režim standardů |
Přechodné | Režim Quirks | Režim Quirks | Režim Quirks |
Přísný | Režim standardů | Režim standardů * | Režim standardů |
Přísný | Režim standardů | Režim standardů * | Režim standardů |
HTML5 | |||
Režim standardů | Režim standardů * | Režim Quirks | |
* S tímto prohlížečem DOCTYPE jsou prohlížeče v souladu s normami, ale mají určité problémy - nezapomeňte otestovat. Toto je také známé jako režim "téměř standardů". |