Navigation überspringen

Mozilla ignoriert externes Stylesheet

Problem:

Mozilla berücksichtigt im Standards Mode keine einzige Formatierung aus einem externen Stylesheet. Das Problem tritt nur online auf. Werden die Seiten offline über das File-System betrachtet, ist alles in Ordnung. (Sollte das Problem unabhängig von der verwendeten Dokumenttyp-Deklaration auch offline auftreten, so dürfte der unter »Sonstiges« beschriebene Fehler die Ursache sein.)

Ursache:

Im Standards Mode werden externe Stylesheets nur dann von Mozilla berücksichtigt, wenn sie vom Server mit dem korrekten Content-Type Header text/css ausgeliefert werden. Dabei reicht es nicht aus, wenn im HTML-Code der korrekte Content-Type (MIME-Type) (<link rel="stylesheet" type="text/css" ...>) angegeben wird.

Zwar sind die meisten Webserver in ihrer Standardkonfiguration so eingerichtet, dass CSS-Ressourcen mit dem korrekten Content-Type Header ausgeliefert werden, aber manchmal kann es doch vorkommen, dass ein Server falsch konfiguriert ist und CSS-Ressourcen mit einem falschen Content-Type Header ausgeliefert werden, so dass Mozilla die externen Stylesheets ignoriert.

Auch das Generieren eines Stylesheets mit PHP führt häufig zu diesem Fehler, da von PHP erzeugte Ressourcen standardmäßig mit dem Content-Type Header text/html ausgeliefert werden.

Um herauszufinden, mit welchem Content-Type Header eine Ressource ausgeliefert wird, kann man diese in Mozilla im Browserfenster laden und sich unter dem Menüpunkt »Page Info« die Eigenschaften der Ressource anzeigen lassen. Der Content-Type Header steht unter »Type« im Karteireiter »General«. Bitte beachten: Soll ein Stylesheet überprüft werden, so muss natürlich das Stylesheet selbst im Browserfenster angezeigt werden und nicht die HTML-Seite, in der es eingebunden ist. Eine weitere Möglichkeit ist die Benutzung des »W3C HTTP Head Service«. Die Adresse der zu testenden Ressource wird in das Formularfeld eingetragen und das Formular abgeschickt. Auf der Ergebnisseite wird unter »Content-Type« der entsprechende Header genannt.

Lösung:

Ist die Ursache eine fehlerhafte Serverkonfiguration, so muss diese korrigiert werden. Am besten wäre natürlich, wenn der Fehler direkt in der zentralen Konfiguration behoben wird. Da man hierauf in der Regel keinen Zugriff hat, hilft bei dieser Art der Fehlerbehebung nur eine freundliche E-Mail an den Serverbetreiber.

Wenn der Webserver ein Apache ist und die Verwendung der dezentralen Serverkonfigurationsdatei .htaccess gestattet ist, dann kann durch eine .htaccess-Datei mit folgender Zeile der Fehler behoben werden:

AddType text/css .css

Durch die AddType-Direktive wird Ressourcen mit der Endung .css der Content-Type text/css zugewiesen. Diese .htaccess-Datei gilt für das Verzeichnis, in dem sie abgelegt wird, und für alle darin enthaltenen Unterverzeichnisse.

Um in Microsoft Servern den Content-Type ändern zu können, sind Administrator-Rechte für das System notwendig. Die einzelnen Schritte sind in dem Microsoft TechNet-Artikel »Working with MIME Types« beschrieben.

Wird ein Stylesheet mit PHP generiert, so muss im PHP-Skript durch die header()-Funktion der korrekte Content-Type Header gesendet werden.

<?php
header("Content-Type: text/css");
?>
Beispiele:
Sonstiges:

Ein häufig auftretender Fehler bei der Erstellung von externen Stylesheets ist, HTML-Tags für einen Style-Bereich in das Stylesheet einzufügen. HTML-Code ist in einem externen Stylesheet aber völlig fehl am Platze. Dieser Fehler führt ebenfalls dazu, dass Mozilla das Stylesheet ignoriert. Das Verhalten der Browser bei diesem Fehler hat aber nichts mit dem DOCTYPE-Switch zu tun, sondern hängt allein von der Fehlertoleranz (bzw. Fehlerintoleranz) der Browser ab.

Verwandte Themen:
Literatur:

Letzte Änderung des Inhaltes: 17.09.05