Seite sieht nach verändertem DOCTYPE völlig anders aus
Jan3
- html
0 Christian Seiler0 Jan30 Christian Seiler0 Jan30 Christian Seiler0 Jan3
Hallo.
Ein Phänomen ganz besonderer Art ist mir vorhin gerade vor die Augen getreten. Man macht sich aufgrund der Validität seiner Seite so einige Mühe, und viel lieber möchte man seine Seite auch noch gemäß XHTML-Standard erstellen. Das machte ich schließlich auch, und zu guter letzt änderte ich folgenden HTML 4.0-Doctype...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
in folgenden XHTML-Trans-Doctype:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
-------------------------------------
Das verblüffende und zugleich schmerzliche Resultat ist nun, dass zwar alle Elemente der Seite richtig angezeigt werden, jedoch die komplette Seite ansich nicht mehr zentriert, sondern linksbündig im Browser (wohlgemerkt NUUUUUUUUUR Internet Explorer, bei Opera gibt's keine Probleme) erscheint.
-------------------------------------
Schade eigentlich, dass man seine Seite XHTML-konform erstellt, und dem Erschaffer dann das XHTML-Doctype wegen eines blöden IE-Riesenbugs verwehrt bleibt.
Hallo Jan,
Schade eigentlich, dass man seine Seite XHTML-konform erstellt, und dem Erschaffer dann das XHTML-Doctype wegen eines blöden IE-Riesenbugs verwehrt bleibt.
Hast Du die <?xml?>-Deklaration weggelassen und steht die DOCTYPE wirklich in der ersten Zeile? Sonst mag' der IE das ganze nicht. Ach ja: XHTML 1.0 Strict entspricht HTML 4.01 Strict, daher kannst Du gleich auch noch Strict nehmen und brauchst kein Transitional.
Grüße,
Christian
Hallo Jan,
Schade eigentlich, dass man seine Seite XHTML-konform erstellt, und dem Erschaffer dann das XHTML-Doctype wegen eines blöden IE-Riesenbugs verwehrt bleibt.
Hast Du die <?xml?>-Deklaration weggelassen und steht die DOCTYPE wirklich in der ersten Zeile? Sonst mag' der IE das ganze nicht. Ach ja: XHTML 1.0 Strict entspricht HTML 4.01 Strict, daher kannst Du gleich auch noch Strict nehmen und brauchst kein Transitional.
Grüße,
Christian
»»
Der IE zickt auch bei Verwendung der XML-Deklaration; momentan steht also ganz valide da:
<?php
echo "<?xml version="1.0" encoding="UTF-8"?>\n";
echo "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\n";
echo " "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n";
echo "<html xmlns="http://www.w3.org/1999/xhtml">\n";
?>
(ich mach das alles über php)
Würde anstatt obiger Zeilen die HTML-Deklaration stehen, geht alles einwandfrei! VERRÜCKT.
Hallo Jan,
<?php
echo "<?xml version="1.0" encoding="UTF-8"?>\n";
Das ist böse[tm]. Mache lieber:
echo "<?xml version="1.0" encoding="UTF-8"?".">\n";
(dann kann der PHP-Parser nicht auf die Idee kommen, dass da schon mit PHP schluss wäre (?> schließt ja auch PHP-Tags))
Würde anstatt obiger Zeilen die HTML-Deklaration stehen, geht alles einwandfrei! VERRÜCKT.
Nein, nicht verrükt. Der IE 6 erkennt die DOCTYPE nur, wenn sie wirklich genau in der ersten Zeile steht. (eine Leerzeile würde ihn auch verwirren!) Zur Auswirkung der DOCTYPE beim IE 6 prinzipiell siehe auch http://www.styleassistant.de/tips/tip52.htm. Jedoch beachte: So, wie der IE 6 mit DOCTYPE in 2. Zeile reagiert, reagiert auch der IE 5. (und der ist noch beachtlich vertreten)
Wenn Netscape 4 endgültig tod ist, dann wird der IE 5 zum nächsten Hassobjekt der Webdesigner. (so ähnlich ausgedrückt findest Du das im Archiv)
Grüße,
Christian
Hallo Jan,
<?php
echo "<?xml version="1.0" encoding="UTF-8"?>\n";
Das ist böse[tm]. Mache lieber:echo "<?xml version="1.0" encoding="UTF-8"?".">\n";
(dann kann der PHP-Parser nicht auf die Idee kommen, dass da schon mit PHP schluss wäre (?> schließt ja auch PHP-Tags))
Würde anstatt obiger Zeilen die HTML-Deklaration stehen, geht alles einwandfrei! VERRÜCKT.
Nein, nicht verrükt. Der IE 6 erkennt die DOCTYPE nur, wenn sie wirklich genau in der ersten Zeile steht. (eine Leerzeile würde ihn auch verwirren!) Zur Auswirkung der DOCTYPE beim IE 6 prinzipiell siehe auch http://www.styleassistant.de/tips/tip52.htm. Jedoch beachte: So, wie der IE 6 mit DOCTYPE in 2. Zeile reagiert, reagiert auch der IE 5. (und der ist noch beachtlich vertreten)
Also jetzt habe ich ausdrücklich die doctype-deklaration mit in Zeile 1, hier mein Anfangscode:
<?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">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>...
Aber der IE nimmt das einfach nicht ernst :( !
Wenn Netscape 4 endgültig tod ist, dann wird der IE 5 zum nächsten Hassobjekt der Webdesigner. (so ähnlich ausgedrückt findest Du das im Archiv)
Grüße,
Christian
»»
Hallo Jan,
Also jetzt habe ich ausdrücklich die doctype-deklaration mit in Zeile 1, hier mein Anfangscode:
<?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">
Natürlich nimmt er das nicht ernst. Vielleicht hätte ich mich etwas genauer ausdrücken sollen: Die DOCTYPE muss mit Byte 1 der Datei anfangen.
Übrigens: Das <?xml?> Brauchst Du eigentlich nicht, die Browser interpretieren das sowieso als HTML und nicht als XML-Derivat, solange Du text/html mitschickst. Wenn Du application/xhtml+xml mitschickst, dann kapieren es aber die meisten Browser nicht richtig, also bleib' lieber bei text/html.
Gute Nacht,
Christian
Danke Christian.
Jetzt funktioneirt es, nur leider wird die Seite ohne den <?xml... - Anfang nicht mehr XHTML1.1-valide sein können.
Naja, die Welt besteht aus Kompromissen :)
Mein aktueller Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
Gute Nacht,
Jan.