Nechajte modul Doctype, aby sa prehliadače dostali do režimu Quirks
Ak ste navrhovali webové stránky dlhšie ako niekoľko mesiacov, s najväčšou pravdepodobnosťou viete, že je ťažké písať stránku, ktorá vyzerá rovnako vo všetkých prehliadačoch . V skutočnosti to nie je možné. Mnoho prehliadačov bolo napísaných so špeciálnymi funkciami, s ktorými sa dokázali zaobchádzať. Alebo majú špeciálne spôsoby, ako zaobchádzať s vecami, ktoré sa líšia od toho, ako ich iné prehliadače zvládnu. Napríklad:
- Vrstvy boli vytvorené pre použitie v prehliadačoch Netscape. Nepracujú v žiadnom inom prehliadači a v skutočnosti boli zastarané v programe Netscape 6.x +.
- Inline rámce boli pôvodne vytvorené len pre Internet Explorer a odvtedy sa stali súčasťou špecifikácie HTML.
- Internet Explorer 6.0 pridáva ďalší priestor (napr
) obklopujúce značky, pokiaľ nepíšete obsah diela na jeden (dlhý) riadok. (IE 6 má oveľa viac ako tento.) - Netscpe 4.7 nezobrazí tabuľky, ktoré nie sú napísané správnym kódom HTML - namiesto nich sa zobrazí prázdna stránka. To bolo opravené v Netscape 6.
Problém pre vývojárov prehliadačov spočíva v tom, že musia vytvárať webové prehliadače, ktoré sú spätne kompatibilné s webovými stránkami vytvorenými pre staršie prehliadače. Kvôli riešeniu tohto problému tvorcovia prehliadačov vytvorili režimy pre prehliadanie prehliadačov. Tieto režimy sú definované prítomnosťou alebo neprítomnosťou prvku DOCTYPE a tým, čo volá DOCTYPE.
Prepínanie DOCTYPE a režim "Quirks"
Ak do svojej webovej stránky zadáte nasledujúci DOCTYPE:
Moderné prehliadače (Android 1+, Chrome 1+, IE 6+, iOS 1+, Firefox 1+, Netscape 6+, Opera 6+, Safari 1+) by to interpretovali takto:
- Pretože je správne napísaný DOCTYPE, spúšťa štandardný režim.
- Je to prechodový dokument HTML 4.01
- Pretože je to v štandardnom režime, väčšina prehliadačov bude kompatibilné s obsahom (alebo väčšinou kompatibilné) s HTML 4.01 Transitional
A ak vložíte tento DOCTYPE do vášho dokumentu:
Toto informuje moderné prehliadače, že chcete zobraziť stránku HTML 4.01 v prísnom súlade s DTD.
Tieto prehliadače prejdú do režimu "prísne" alebo "štandardné" a vykresľujú stránku v súlade s normami. (Takže pre tento dokument môžu byť značky, ktoré môžu prehliadač úplne ignorovať, pretože prvok FONT bol zastaraný v HTML 4.01 Strict.)
Ak necháte DOCTYPE úplne, prehliadače sa automaticky spustia do režimu "quirks".
Nasledujúca tabuľka zobrazuje to, čo robia bežné prehliadače, keď sú prezentované s rôznymi bežnými vyhláseniami DOCTYPE.
Microsoft robí to ťažšie
Aplikácia Internet Explorer 6 má aj funkciu, že ak zadáte nič nad vyhlásením DOCTYPE, prejdú do režimu quirks. Takže oba tieto príklady prinesú IE 6 do režimu quirks, hoci deklarácie DOCTYPE hovoria, že sú v prísnom štandardnom režime:
a XHTML 1.1 DOCTYPE:
Navyše, ak sa dostanete okolo IE6, potom máte "funkciu", ktorú spoločnosť Microsoft pridala do IE8 a IE9: prepínanie prvkov META a čierna listina webových stránok. V skutočnosti tieto dve verzie prehliadačov majú až sedem (!) Rôznych režimov:
- Režim IE 5.5 quirks (IE 8 a 9)
- Norma IE 7 (IE 8 a 9)
- IE 8 takmer štandardný režim (IE 8 a 9)
- Režim IE 8 (IE 8 a 9)
- IE 9 takmer štandardný režim (IE 9)
- IE 9 štandardný režim (IE 9)
- Režim XML (IE 9)
IE 8 tiež zaviedol "režim kompatibility", kde sa používateľ mohol rozhodnúť zmeniť model vykresľovania späť do režimu IE 7. Takže aj keď nastavíte režim, ktorý chcete nastaviť pomocou prvkov DOCTYPE a META, vaša stránka by sa mohla vrátiť späť do režimu, ktorý je menej kompatibilný s normami.
Čo je režim Quirks?
Režim Quirks bol vytvorený, aby pomohol riešiť všetky podivné vykresľovanie a nevyhovujúcu podporu prehliadačov a hackov, ktoré web dizajnéri používali na riešenie týchto vecí. Obavy, že výrobcovia prehliadačov mali, že ak by prepnúť prehliadače na úplné splnenie špecifikácií, web dizajnéri by zostali za sebou.
Nastavením prepínania DOCTYPE a režimu "Quirks" umožnili web dizajnéri, aby si vybrali, ako chcú, aby prehliadače vykresľovali HTML.
Efekty režimu Quirks
Existuje niekoľko efektov, ktoré väčšina prehliadačov používa v režime Quirks:
- V niektorých prehliadačoch sa model krabice zmení na verziu IE 5.5 modelu boxu v režime quirks.
- Niektoré prehliadače nezdieľajú štýly do tabuliek
- Režim Quirks výrazne ovplyvňuje rozloženie rozloženia CSS a CSS, ak konvertujete stránky do štandardného režimu z režimu quirks, uistite sa, že ste otestovali rozloženie CSS a analyzovali značne.
- Sledujte zmeny v skriptovaní v režime quirks. Firefox mení spôsob, akým funguje napríklad atribút id. IE8 a IE9 majú veľmi dramatické zmeny v skriptovaní v režime quirks.
Existuje aj rozdiel v režime "takmer štandardov".
- Výška buniek tabuľky s vnútornými obrazmi sa vypočítava inak ako v štandardnom režime.
Ako si vybrať DOCTYPE
Prejdem do detailu v dokumente DOCTYPE List, ale tu sú niektoré všeobecné pravidlá:
- Vždy vyberte režim štandardov. A súčasný štandard, ktorý by ste mali používať, je HTML5: Pokiaľ nemáte konkrétny dôvod, prečo sa chcete vyhnúť používaniu modulu HTML5 DOCTYPE, je to to, čo by ste mali používať.
- Prejdite na prísny HTML 4.01, ak potrebujete overiť pôvodné prvky alebo sa chcete vyhnúť novým funkciám z nejakého dôvodu:
- Ak ste nakrájali obrázky v tabuľke a nechcete ich opravovať, prejdite na Prechodný HTML 4.01:
- Nepoužívajte stránky zámerne v režime quirks. Vždy používajte DOCTYPE. To vám v budúcnosti ušetrí čas vývoja a naozaj nemá žiaden prínos. IE6 rýchlo stráca popularitu a navrhovaním pre tento prehliadač (čo je v podstate to, čo navrhujete v režime quirks je), obmedzujete sa sami, vašimi čitateľmi a vašimi stránkami. Ak musíte napísať pre IE 6 alebo 7, použite podmienečné komentáre na ich podporu, namiesto toho, aby ste nútili moderné prehliadače do režimu quirks.
Prečo používať DOCTYPE
Akonáhle si uvedomíte, že tento typ prepínania DOCTYPE sa deje, môžete ovplyvniť vaše webové stránky priamo priamo pomocou DOCTYPE, ktorý označuje, čo môže prehliadač očakávať od vašej stránky. Taktiež, akonáhle začnete používať DOCTYPE, budete písať HTML, ktorý je bližšie k platnej (mali by ste ju stále overovať). A tým, že píšete platnú verziu XHTML, povzbudíte tvorcov prehliadačov k vytváraniu štandardných prehliadačov.
Režimy prehliadača a Režim Quirks
DOCTYPE | Android chróm Firefox IE 8+ iOS Opera 7.5+ safari | IE 6 IE 7 Opera 7 | Netscape 6 |
---|---|---|---|
nikto | Režim Quirks | Režim Quirks | Režim Quirks |
HTML 3.2 | |||
Režim Quirks | Režim Quirks | Režim Quirks | |
HTML 4.01 | |||
prechodný | Režim štandardov * | Režim štandardov * | Režim štandardov |
prechodný | Režim Quirks | Režim Quirks | Režim Quirks |
prísny | Režim štandardov | Režim štandardov * | Režim štandardov |
prísny | Režim štandardov | Režim štandardov * | Režim štandardov |
HTML5 | |||
Režim štandardov | Režim štandardov * | Režim Quirks | |
* S touto DOCTYPE sú prehliadače blízke normám, ktoré sú v súlade s normami, ale majú niekoľko problémov - určite otestujte. Toto je tiež známe ako režim "takmer štandardov". |