Hier bist Du: Home « Workshops « Workshop Doctype-Switch: Teil 1 - Doctype-Switching

Workshop Doctype-Switch: Teil 1 - Doctype-Switching

Dank der mangelhaften CSS-Umsetzung der Browser der letzten Jahre, waren Web-Designer gezwungen, ihre Seiten mehr oder weniger fehlerhaft und am Standard des W3C vorbei zu erstellen. Viele Anfänger machten aus Unwissenheit auch diverse Fehler, die von den Browsern nicht immer bemerkt wurden, da sie sich in einigen Punkten fehlertoleranter verhielten als heute. So waren z.B. hexadezimale Farbangaben ohne # möglich, das Boxmodell im Internet Explorers bis zur Version 5.5 falsch umgesetzt und Eigenkreationen wie Laufschrift und blinkender Text verbreitet.
Die modernen Browser verhalten sich zum Glück mittlerweile gut bis sehr gut an die CSS-Spezifikation, ignorieren fehlerhafte Angaben und interpretieren das Boxmodell. Das hat aber auch zur Folge, dass ältere oder nicht standardkonforme Seiten fehlerhaft angezeigt werden.

Quirks-, Almost-Standards- und Standards-Mode

Aus diesem Grund lassen sich die Browser mit dem <!DOCTYPE> in verschiedene Darstellungsmodi umschalten. Je nachdem, ob das <!DOCTYPE> fehlt, fehlerhaft ist oder als Sprache für das Dokument HTML 3.2, HTML 4.0, XHTML 1.0 oder XHTML 1.1 in den Varianten Transitional, Frameset oder Strict festlegt, verhält sich der Browser standardkonform oder wie eine ältere Version. Damit soll sichergestellt sein, dass moderne und ältere Seiten gleichermaßen richtig angezeigt werden.
Die folgenden drei Darstellungs-Modi haben sich mittlerweile durchgesetzt:

Quirks-Mode

Im Quirks-Mode verhält sich der Browser wie eine ältere Version aus dem 20. Jahrhundert, die u.a. Fehler im Quellcode ignoriert und veraltete HTML-Tags und -Attribute kennt.
Der Internet Explorer 6 setzt das Boxmodell falsch um, Internet Explorer, Geckos (Mozilla, Netscape,...) und Opera sind toleranter bei fehlerhaften CSS-Angaben wie z.B. das Fehlen des # bei Farbwerten und Längenangaben ohne Einheit.

Standards-Mode

Im Standards-Mode, auch Standards-Compliant Mode oder Full Standards Mode genannt, verhält sich der Browser weitesgehend an die CSS-Spezifikation des W3C und versucht die Seiten standardkonform anzuzeigen. Abgesehen von einigen bis diversen Bugs funktioniert das auch gut.
Auch wenn nach dem Validieren die erste Fehlerliste vielleicht länger als der Quellcode ist, solltest du deine Seiten gleich nach XHTML 1.0 Strict und somit im Standard-Mode erstellen.

Almost Standard Mode

Mozilla hat mit diesem Modus mit der Version 1.0.1 and 1.1beta noch einen weiteren eigenen Modus eingeführt, der sich vom Standards-Mode nur in dem Punkt unterscheidet, wie die Zeilenhöhen in Tabellen berechnet werden.

 

nach oben

Browser-Bugs

Der Internet Explorer 6 hat, wie war es anders zu erwarten, zwei Probleme mit der <!DOCTYPE>-Angabe. Wird vor dem <!DOCTYPE> ein Kommentar oder eine xml-Angabe eingefügt, so schaltet der IE immer in den Quirks-Modus:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!--  --><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Beide Angaben belassen den IE im Quirks-Modus.
Gleiches gilt übrigens auch für den Opera 7.0 - 7.03, da die Entwickler wohl der Meinung waren, das Verhalten des IEs nachahmen zu müssen :-(. Seit der Version 7.1 ist dies aber korrigiert.

 

nach oben

Modus überprüfen

Die Javascript-Eigenschaft compatMode erlaubt dir, den aktuellen Darstellungs-Modus abzufragen. Im Quirks-Mode liefert document.compatMode den Wert BackCompat oder Quirks-Mode und im Standards-Mode CSS1compat.
Internet Explorer 6, Mozilla ab der Version 1, Netscape und Opera ab Version 7 kennen diese Eigenschaft. Alle anderen Browser liefern als Wert undefined und Mozilla unterscheidet hierbei nicht zwischen Standards-Mode und dem eigenen Almost Standards Mode.

Internet Explorer 6.0, Opera 7, Netscape 7, Mozilla 1.0, Mozilla Firefox 0.8, Safari 1.0, Konqueror 3.1
<script type="text/javascript">
alert(document.compatMode);
</script>

Beispiel Quirks-Mode
Beispiel Standards-Mode

 

nach oben

Weiterführende Links

Genauere Beschreibungen der Unterschiede zwischen den einzelnen Darstellungs-Modi findest du auf den Seiten der Browserentwickler:

nach oben