Los die Doctype uit om Browsers in Quirks af te stel
As jy meer as 'n paar maande webbladsye ontwerp, is jy waarskynlik bewus van die probleem om 'n bladsy wat in alle blaaiers dieselfde lyk, te skryf. In werklikheid is dit onmoontlik. Baie blaaiers is geskryf met spesiale eienskappe wat hulle net kon hanteer. Of hulle het spesiale maniere om dinge te hanteer wat verskil van hoe ander blaaiers hulle hanteer. Byvoorbeeld:
- Lêers is geskep vir gebruik in Netscape-blaaiers. Hulle werk nie in enige ander blaaier nie, en is eintlik in Netscape 6.x + afgedank.
- Inlyn rame is oorspronklik net vir Internet Explorer geskep, en het sedertdien deel geword van die HTML-spesifikasie.
- Internet Explorer 6.0 voeg 'n bykomende spasie by (soos 'n
) Omliggende etikette, tensy jy die inhoud van die div alles op een (lang) lyn skryf. (IE 6 het baie meer eienskappe sowel as hierdie een.) - Netscpe 4.7 sal nie tabelle vertoon wat nie in korrekte HTML geskryf is nie - dit wys eerder 'n leë bladsy. Dit is vasgestel in Netscape 6.
Die probleem vir webblaaierontwikkelaars is dat hulle webblaaiers moet maak wat agteruit verenigbaar is met webblaaie wat vir ouer blaaiers gebou is. Om hierdie probleem te hanteer, het blaaiermakers modi geskep vir die blaaiers om in te werk. Hierdie modusse word gedefinieer deur die teenwoordigheid of afwesigheid van 'n DOCTYPE-element en wat dit DOCTYPE skakel.
DOCTYPE Switching en "Quirks Mode"
As jy die volgende DOCTYPE in jou webblad plaas:
Moderne blaaiers (Android 1+, Chrome 1+, IE 6+, iOS 1+, Firefox 1+, Netscape 6+, Opera 6+, Safari 1+) sal dit op die volgende manier interpreteer:
- Aangesien daar 'n korrek geskrewe DOCTYPE is, word dit standaardmodus aangepak.
- Dit is 'n HTML 4.01 Oorgangsdokument
- Omdat dit in die standaardmodus is, sal die meeste blaaiers die inhoud voldoen (of meestal voldoen) met HTML 4.01 Transitional
En as jy hierdie DOCTYPE in jou dokument plaas:
Dit vertel moderne blaaiers wat jy jou HTML 4.01-bladsy wil vertoon, in ooreenstemming met die DTD.
Hierdie blaaiers gaan in "streng" of "standaard" af en maak die bladsy in ooreenstemming met die standaarde. (Dus, vir hierdie dokument, kan etikette soos dalk heeltemal geïgnoreer word deur die blaaier, aangesien die FONT-element in HTML 4.01 Strict verouderd is.)
As jy die DOCTYPE volledig verlaat, word die blaaiers outomaties in die "quirks" -modus geskop.
Die tabel hieronder toon wat die algemene blaaiers doen wanneer hulle met verskillende algemene DOCTYPE-verklarings aangebied word.
Microsoft maak dit harder
Internet Explorer 6 het ook die kenmerk dat as jy iets bo die DOCTYPE-verklaring plaas, sal hulle in die modus quirks gaan. Dus, albei van hierdie voorbeelde sal IE 6 in quirks-modus plaas, alhoewel die DOCTYPE-verklarings sê dat dit in streng standaarde is:
en die XHTML 1.1 DOCTYPE:
Plus, as jy verby IE6, dan het jy die "funksie" wat Microsoft bygevoeg het in IE8 en IE9: META element skakel en webwerf swartlys. Trouens, hierdie twee blaaier weergawes het nou tot sewe (!) Verskillende modusse:
- IE 5.5 quirks modus (IE 8 en 9)
- IE 7 standaard af (IE 8 en 9)
- IE 8 byna standaard modus (IE 8 en 9)
- IE 8 standaard af (IE 8 en 9)
- IE 9 byna standaard af (IE 9)
- IE 9 standaard af (IE 9)
- XML-modus (IE 9)
IE 8 het ook "Compatibility Mode" ingestel waar die gebruiker kon kies om die renderingmodel terug te verander na die IE 7-modus. Sodat selfs as jy die modus wat jy wil stel met behulp van beide die DOCTYPE- en META-elemente, stel, kan jou bladsy weer in 'n minder standaard-modus afgestoot word.
Wat is Quirks Mode?
Quirks-modus is geskep om te help met die hantering van al die vreemde weergawes en nie-voldoenende blaaiersteun en hacks wat webontwerpers gebruik om daardie dinge te hanteer. Die besorgdheid wat blaaiervervaardigers gehad het, was dat as hulle hul blaaiers oorgeskakel het na volledige spesifikasie nakoming, webontwerpers agtergelaat sou word.
Deur die opstel van DOCTYPE skakel en Quirks Mode het dit die webontwerpers toegelaat om te kies hoe hulle wou hê dat blaaiers hul HTML moet lewer.
Quirks modus effekte
Daar is verskeie effekte wat die meeste blaaiers gebruik in Quirks Mode:
- In sommige blaaiers verander die boksmodel na die IE 5.5-weergawe van die boksmodel in quirks-modus.
- Sommige blaaiers ervaar nie style in tabelle nie
- Quirks af beïnvloed die ontleding van CSS- en CSS-uitleg dramaties. As u bladsye omskakel na die standaardmodus van die quirks-modus, moet u u CSS-uitleg deeglik toets en analiseer.
- Kyk vir die veranderinge in skripsies wanneer dit in quirks af is. Firefox verander die manier waarop die id-kenmerk werk, byvoorbeeld. IE8 en IE9 het baie dramatiese veranderinge in scripting in quirks modus.
Daar is ook 'n verskil in "Byna Standaarmodus:"
- Die hoogte van tafelselle met slegs beelde binne word anders bereken as die standaardmodus.
Hoe om 'n DOCTYPE te kies
Ek gaan meer in detail in my artikel DOCTYPE List, maar hier is 'n paar algemene reëls:
- Kies altyd die standaardmodus eers. En die huidige standaard wat jy moet gebruik is HTML5: Tensy u 'n spesifieke rede het om die HTML5 DOCTYPE te vermy, moet u dit gebruik.
- Gaan na streng HTML 4.01 as jy ouer elemente moet validiseer of om nuwe funksies om een of ander rede te vermy:
- As jy gesnyde beelde in 'n tabel het en nie wil regmaak nie, gaan na Transitional HTML 4.01:
- Moenie bladsye doelbewus in quirks af skryf nie. Gebruik altyd 'n DOCTYPE. Dit sal jou spaar op ontwikkelingstyd in die toekoms en het werklik geen voordeel nie. IE6 verloor vinnig gewildheid en deur die ontwerp van hierdie blaaier (wat eintlik is wat ontwerp in die quirks-modus is) beperk jy jouself, jou lesers en jou bladsye. As jy vir IE 6 of 7 moet skryf, gebruik dan voorwaardelike opmerkings om hulle te ondersteun, eerder as om moderne blaaiers in quirks af te dwing.
Hoekom gebruik DOCTYPE
Sodra jy bewus is van hierdie tipe DOCTYPE-skakelwerk, kan jy jou webbladsye meer direk beïnvloed deur 'n DOCTYPE te gebruik wat aandui wat die blaaier van jou bladsy kan verwag. Sodra jy DOCTYPE begin gebruik, skryf jy HTML wat nader aan geldig is (jy moet dit nog steeds validiseer). En deur 'n geldige XHTML te skryf, moedig jy blaaiermakers aan om standaarde-ondersteunende blaaiers te bou.
Browser weergawes en quirks af
DOCTYPE | Android Chroom Firefox IE 8+ iOS Opera 7.5 + safari | IE 6 IE 7 Opera 7 | Netscape 6 |
---|---|---|---|
Geen | Quirks af | Quirks af | Quirks af |
HTML 3.2 | |||
Quirks af | Quirks af | Quirks af | |
HTML 4.01 | |||
oorgang | Standaarde af * | Standaarde af * | Standaarmodus |
oorgang | Quirks af | Quirks af | Quirks af |
streng | Standaarmodus | Standaarde af * | Standaarmodus |
streng | Standaarmodus | Standaarde af * | Standaarmodus |
HTML5 | |||
Standaarmodus | Standaarde af * | Quirks af | |
* Met hierdie DOCTYPE, blaaiers is naby aan standaarde voldoen, maar het 'n paar probleme. Maak seker dat jy dit toets. Dit staan ook bekend as "Byna Standaarde Modus." |