Firefox springt bei XHTML 1.1 immer wieder in den Quirks-Mode

wahnsinn

Teilzeitcholeriker
ID: 13929
L
20 April 2006
1.168
153
Da bin ich endlich dabei, dass ich mal was mit XHTML 1.1 mach und schon kommen die Probleme.

Bei mir lokal auf dem XAMPP auf Windows hat alles wunderbar geklappt, und der Firefox war schön im Standard-Mode. Kaum lade ich das Ding aber hoch auf den Webserver, hatte ich ein seltsames Phänomen:
Manchmal war der Firefox im Quirks-Modus, manchmal im Standard-Modus. Nach jedem Reload mal so und mal so - völlig ohne erkennbare Regelmäßigkeit. Dadurch wurde mein Formular immer wieder verschoben.

Ich hab die Screenshots hier mal aufeinander gelegt, damit ihr seht was ich meine.


Nachdem mir der W3C-Validator grünes Licht gegeben hatte, hab ich dann ein bisschen gegoogelt und kam zu dieser Übersicht. Hier habe ich gesehen, dass beim IE keine XML-Definition vorhanden sein darf und hab mir gedacht, was für den IE gut ist muss dem Firefox ja auch nicht unbedingt schaden. Zumal laut der Übersicht ja bei XHTML 1.1 ohne XML-Zeile alle Browser im Strict-Modus laufen.

Gesagt, getan. Die Zeile hier hab ich rausgemacht:
HTML:
<?xml version="1.0" encoding="iso-8859-1"?>

Und jetzt scheint's zu gehen. Tausend Reloads später ist er noch nicht wieder in den Quirks-Modus gesprungen.

Hat da jemand schon mal ähnliche Erfahrungen gemacht? An was liegt das? War meine XML-Zeile falsch?

Ach ja, falls es jemanden interessiert. Ich habe Firefox 2.0 auf Windows XP.
 
was passiert wenn du den zeichensatz auf utf8 änderst in der xml einleitung? ich schätze mal das hängt irgendwie mit dem zeichensatz zusamm...
 
Gleiches Phänomen. Auch mit UTF-8.

Aber ist es nicht sowieso besser, wenn ich die Zeile weg lasse. Schließlich ist doch dann der IE auch gleich im Quirks-Modus. Das kann mir eigentlich nur recht sein.
 
Das wird immer dubioser. :think:

Wenn ich in meine index.php folgendes schreibe tritt das Phänomen mit den wechselnden Modi auf.

PHP:
<?php echo('<?xml version="1.0" encoding="iso-8859-1"?>'."\n"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Ersetze ich das aber durch das hier, passt scheinbar alles.


PHP:
<?php

echo('<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'); 

?>
 
Wie siehts mit \r\n statt \n aus ?
Das ändert auch nichts.
edit:
Oder es liegt daran, dass du im ersten Code sehr wahrscheinlich zwei Umbrüche hast, im zweiten Code nur einen :think:

Wenn ich folgenden Code verwende ...
PHP:
<?php echo('<?xml version="1.0" encoding="iso-8859-1"?>'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
... steht das im HTML-Quelltext.
HTML:
<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Also nur eine Zeile. Irgendwie werden Zeilenumbrüche nach dem PHP-End-Tag ignoriert.
 
Wieso schreibst du nicht folgendes:
PHP:
<?php echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Bei mir funktioniert das, ohne Probleme.
 
Wieso schreibst du nicht folgendes:
PHP:
<?php echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Weil das genau aufs gleiche hinaus läuft wie das hier:

PHP:
<?php echo('<?xml version="1.0" encoding="iso-8859-1"?>'."\n"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Und der Fehler bleibt auch gleich.