Doctype Switching – Wann schaltet welcher Browser in welchen Modus

Wenn es verschiedene Modi gibt, muss man die Browser auch in diese Modi schalten können. Dieses „Umschalten“ wird als Doctype Switching bezeichnet. Wie die Bezeichnung bereits vermuten lässt, benötigt man dazu die Doctype Deklaration. Wie eingangs erwähnt unterscheidet man zwischen 2 verschiedenen Deklarationen, nämlich die mit URI und ohne URI. Genau an dieser Stelle hat man die Möglichkeit die Browser in die verschiedenen Darstellungsmodi zu schalten. Wann genau welcher Browser in welchen Modus umschaltet kann man an dieser Tabelle sehen :

Die Tests dafür stammen von Eric Meyers Doctype Tester

PC MAC  
  IE Mozilla Opera IE Mozilla Opera Safari Konq.
Version >3 >6.x 7 >0.95  >1.01 >5 >7.1 5.x >0.95 >1.01 >7.1 0.82 >0.90 >3
Unbek. <!DOCTYPE >
 
Q S S S S S S Q S S S S S S

Unbek. <!DOCTYPE >
+URI

Q S S S S S S Q S S S S S S
HTML 2.0
 
Q Q S Q Q Q Q Q Q Q Q Q Q Q
HTML 3.0
 
Q Q S Q Q Q Q Q Q Q Q Q Q Q
HTML 3.2
 
Q Q Q Q Q Q Q Q Q Q Q Q Q Q
HTML 3.2 + URI
 
Q Q Q Q Q Q Q Q Q Q Q Q Q Q
HTML 4.0 Strict
 
Q S S S S S S S S S S S S S
HTML 4.0 Strict
+ URI
Q S S S S S S S S S S S S S
HTML 4.0 Trans.
 
Q Q Q Q Q Q Q Q Q Q Q Q Q Q
HTML 4.0 Trans.
+ URI
Q S S Q Q S S S Q Q S Q Q Q
HTML 4.0 Frameset
 
Q Q Q Q Q Q Q Q Q Q Q Q Q Q
HTML 4.0 Frameset
+ URI
Q S S Q Q S S S Q Q S Q Q Q
HTML 4.01 Strict
 
Q S S S S S S S S S S S S S
HTML 4.01 Strict
+ URI
Q S S S S S S S S S S S S S
HTML 4.01 Trans.
 
Q Q Q Q Q Q Q Q Q Q Q Q Q Q
HTML 4.01 Trans.
+ URI
Q S S S A S S S S A S Q A A
HTML 4.01 Frameset
Q Q Q Q Q Q Q Q Q Q Q Q Q Q
HTML 4.01 Frameset
+ URI
Q S S S A S S S S A S Q A A
XHTML 1.0 Strict
 
Q S S S S S S S S S S S Q Q
XHTML 1.0 Strict
+ URI
Q S S S S S S S S S S S Q Q
XHTML 1.0 Trans.
 
Q S S S A S S S S A S Q A A
XHTML 1.0 Trans.
+ URI
Q S S S A S S S S A S Q A A
XHTML 1.0 Frameset
 
Q S S S A S S S S A S Q A A
XHTML 1.0 Frameset
+ URI
Q S S S A S S S S A S Q A A
XHTML 1.0 Strict
+ XML
Q Q S S S Q S S S S S S S S
XHTML 1.0 Strict
+ URI + XML
Q Q S S S Q S S S S S S S S
XHTML 1.0 Trans.
+ XML
Q Q S S A Q S S S A S Q A A
XHTML 1.0 Trans.
+ URI + XML
Q Q S S A Q S S S A S Q A A
XHTML 1.0 Frameset
+ XML
Q Q S S A Q S S S A S Q A A
XHTML 1.0 Frameset
+ URI + XML
Q Q S S A Q S S S A S Q A A
XHTML 1.1
 
Q S S S S S S S S S S S S S
XHTML 1.1
+ XML
Q Q S S S Q S S S S S S S S

Mit XHTML 1.0 wurde der so genannte XML Prolog eingeführt. Die XML Deklaration

1
< ?xml version="1.0" encoding="utf-8"?>

weißt den Browser darauf hin, dass die Zeichen des folgenden Dokumentes aus der UTF-8 Spezifikation stammen. UTF-8 ist eine Untermenge des ASCII Zeichensatzes.

Da es bereits Unterschiede in der aufgrund des XML Prologs gibt, sind werden zusätzlich auch die Rendermodi mit dem Prolog getestet. In der Tabelle zu erkennen an

XML + … Doctype …

am Ende der Tabelle

Bugs

Fehlerhafte Interpretation des XML Prologs

Die Einführung des XML Prologs hat leider auch einen unangenehmen Nebeneffekt mit sich gebracht. Der Internet Explorer 6/win schaltet, sobald er den Prolog sieht, in den Quirks-Modus und zwar unabhängig von der verwendeten Doctype Deklaration. Dieses Fehlverhalten wurde von den Opera Entwickler ursprünglich übernommen, weshalb also

  • Opera 7.0 – 7.03
  • IE 6/Win

in den Quirks-Modus schalten.

Seit Opera 7.1 wurde das Verhalten von den Entwicklern wieder korrigiert und der XML Prolog hat keinen Einfluss mehr auf den Darstellungsmodus.

Auch Microsoft hat mit seiner zukünftigen Version des Internet Explorers 7 auf dieses Fehlverhalten reagiert und ein XML Prolog zu Beginn des Quellcode wirft den Browser nicht mehr irrtümlicherweise in den Quirksmodus zurück

Unabhängig vom XML Prolog gibt es einen weiteren Bug, der jedoch nur im Internet Explorer 6 auftaucht, jedoch nicht in den Versionen Opera 7.0 – 7.03

1
<!-- --><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

Platziert man nämlich vor die Doctype Deklaration irgendwelche Zeichen (in diesem Beispiel einen leeren Kommentar), so schaltet der IE6/win in den Quirks-Modus, unabhängig von der verwendeten Doctype Deklaration.

Quellen

Geschrieben : 17.März 2003
Letztes Update : 20.April 2006

Pages: 1 2 3