Als u al meer dan een paar maanden webpagina's ontwerpt, weet u waarschijnlijk dat het moeilijk is om een pagina te schrijven die er in alle browsers hetzelfde uitziet. In feite is dat onmogelijk. Veel browsers zijn geschreven met speciale functies die alleen zij aankonden. Of ze hebben speciale manieren om dingen af te handelen die anders zijn dan hoe andere browsers ermee omgaan. Bijvoorbeeld:
- Lagen zijn gemaakt voor gebruik in Netscape-browsers. Ze werken niet in een andere browser en zijn in feite verouderd in Netscape 6.x +.
- Inline-frames zijn oorspronkelijk alleen gemaakt voor Internet Explorer en zijn sindsdien onderdeel geworden van de HTML-specificatie.
- Internet Explorer 6.0 voegt een extra spatie toe (zoals een) omringende tags, tenzij u de inhoud van de div allemaal op één (lange) regel schrijft. (IE 6 heeft nog veel meer eigenaardigheden en deze.)
- Netscpe 4.7 geeft geen tabellen weer die niet in de juiste HTML zijn geschreven; in plaats daarvan wordt een blanco pagina weergegeven. Dit is opgelost in Netscape 6.
Het probleem voor browserontwikkelaars is dat ze webbrowsers moeten maken die achterwaarts compatibel zijn met webpagina's die zijn gemaakt voor oudere browsers. Om dit probleem op te lossen, hebben browsermakers modi gemaakt waarmee de browsers kunnen werken. Deze modi worden gedefinieerd door de aanwezigheid of afwezigheid van een DOCTYPE-element en wat dat betreft DOCTYPE
noemt.
DOCTYPE
Ik ga in meer detail in mijn artikel DOCTYPE
Lijst, maar hier zijn enkele algemene vuistregels:
- Kies altijd eerst de standaardenmodus. En de huidige standaard die u zou moeten gebruiken, is HTML5: tenzij u een specifieke reden hebt om het gebruik van de HTML5 te vermijden
DOCTYPE
, dit is wat je zou moeten gebruiken. - Ga naar strikte HTML 4.01 als u oude elementen wilt valideren of als u om een andere reden nieuwe functies wilt vermijden:
- Als je afbeeldingen in een tabel hebt gesneden en ze niet wilt herstellen, ga je naar Transitional HTML 4.01:
- Schrijf geen pagina's opzettelijk in de quirks-modus. Gebruik altijd een
DOCTYPE
. Dit zal u in de toekomst besparen op ontwikkelingstijd en heeft echt geen voordeel. IE6 verliest snel aan populariteit en door te ontwerpen voor deze browser (wat in wezen is wat ontwerpen in eigenaardigheden-modus is) beperk je jezelf, je lezers en je pagina's. Als je moet schrijven voor IE 6 of 7, gebruik dan voorwaardelijke opmerkingen om ze te ondersteunen in plaats van moderne browsers in de quirks-modus te dwingen.
Waarom gebruiken DOCTYPE
Zodra je je bewust bent van dit soort DOCTYPE
Als u overschakelt, kunt u uw webpagina's directer beïnvloeden door a te gebruiken DOCTYPE
dat geeft aan wat de browser van uw pagina mag verwachten. Ook als je eenmaal begint te gebruiken DOCTYPE
, zult u HTML schrijven die dichterbij geldig is (u zou het nog steeds moeten valideren). En door geldige XHTML te schrijven, moedig je browsermakers aan om browsers die voldoen aan de standaarden te bouwen.
Browserversies en Quirks-modus
DOCTYPE | AndroidChromeFirefoxIE 8+iOSOpera 7.5+Safari | IE 6IE 7Opera 7 | Netscape 6 |
---|---|---|---|
Geen | Quirks-modus | Quirks-modus | Quirks-modus |
HTML 3.2 | |||
Quirks-modus | Quirks-modus | Quirks-modus | |
HTML 4.01 | |||
overgangs | Standaardenmodus * | Standaardenmodus * | Standaardenmodus |
overgangs | Quirks-modus | Quirks-modus | Quirks-modus |
streng | Standaardenmodus | Standaardenmodus * | Standaardenmodus |
streng | Standaardenmodus | Standaardenmodus * | Standaardenmodus |
HTML5 | |||
Standaardenmodus | Standaardenmodus * | Quirks-modus | |
* Met deze DOCTYPE zijn browsers bijna conform aan de standaarden, maar ze hebben enkele problemen - test ze zeker. Dit staat ook bekend als "Bijna-standaardmodus". |