BITFOX® | LÖSUNGEN | SERVICE | LOGIN | BLOG | KONTAKT

Freitag, 18. Februar 2011

XHTML 1.0 Strict, CSS und Firefox

Wer hin und wieder mit xHTML im Strict-Mode codiert und CSS-Dateien einbindet wird feststellen, dass Firefox oft auf einmal die so genannten Stylesheet-Dateien nicht beachtet:
Während dann der Internet-Explorer und andere Browser als auch der W3C-Validator eine Website "problemlos" anzeigen und als fehlerfrei interpretieren, wird man beim Firefox in den Wahnsinn getrieben.
Doch woran liegt das?

Das Problem ist ist recht einfach und auch sehr einfach zu beheben - wenn man es verstanden hat.
Im Internet finden sich sehr viele dubiose Problem"lösungen" und Workarounds - vielleicht ist es an der Zeit, einmal damit ein wenig aufzuräumen.



Zunächst einmal wird normaler Weise bei einem HTML-Gerüst der Document-Type angegeben.
Das ganze kann z.B. so aussehen:

<?xml version="1.0" encoding="iso-8859-1" standalone="no" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> 

Im Head-Bereich wird dann meist eine CSS-Datei nachgeladen:

<head>
    <title>Test</title>
    <link rel="stylesheet" type="text/css" href="./css/meine.css"/>
</head>


Meist wird das noch funktionieren.
Auf jeden Fall gibt es aber Probleme, wenn die Stylesheets wie folgt nachgeladen werden

<head>
    <title>Test</title>
    <link rel="stylesheet" type="text/css" href="./css/meine.xyz"/>
</head>

Was ist aber nun das Problem?

Während fast alle Browser den Typen "text/css" aus der Link-Anweisung sauber interpretieren, verlässt sich Firefox hier nicht auf den angegebenen Typen und Fragt den Webserver, welcher Dateityp ausgeliefert wird.
Die meisten Server geben diesen "Application-Type" bzw. "MIME-Type" nicht bei jeder Datei an - wozu auch? lediglich bei bekannten Dateitypen wie .jpg, .png, .gif, .php, .html wird dieser oft mit ausgeliefert.
Und genau an dieser Stelle "zickt" Firefox und sagt: "Das was nicht explizit als CSS-Datei vom Server kommt, werde ich auch nicht als CSS-Datei verarbeiten" --
Und das obwohl ihm doch explizit gesagt wurde: "Das was kommt ist vom Typen text/css".

Man kann sich nun lange streiten, ob dieses "Problem" ein Problem der Konfiguration des Webservers ist und Firefox nur halt sehr sicher arbeitet - oder ob man hier zurecht behaupten darf, dass sich die entwickelnde Open-Source-Gemeinde über Trivialitäten streitet, die sich nunmal einfach eingebürgert haben:
Selbst der FireFox-Browser kann jpg-Dateien als Bilder darstellen, wenn sich dahinter in Wirklichkeit eine png-Datei versteckt - weil ein verwirrter Benutzer sich beim Abspeichern eines Bildes mit dem Namen der Dateiendung geirrt hat.
Selbst beliebige Bilder des Typen JPG PNG BMP GIF mit der Endung .zufall werden von Firefox problemlos geladen, bestimmt und auf dem Bildschirm angezeigt.

Was kann man aber nun tun?

Bei Apache Webservern lässt sich die Server-Konfigurationsdatei .htaccess im jeweiligen Arbeitsverzeichnis manipulieren:
Man fügt einfach einen Application-Type hinzu:

ApplicationType text/css .css

.....nur leider gibt es hier nun gleich das nächste Problem:
Zunächst einmal schalten viele Webhoster die Möglichkeit die .htacces zu manipulieren aus Sicherheitsgründen ab.
Als nächstes Problem ist zu beachten, dass viele erfahrene HTML-codierer auch gern ihre CSS-Dateien via PHP dynamisch generieren:

<head>
    <title>Test</title>
    <link rel="stylesheet" type="text/css" href="./css/meine.css.php"/>
</head> 

Wird in der .htaccess nun definiert, dass der ApplicationType "text/css" für ".css.php"-Dateien gilt, so wird hier kein PHP mehr durchgeführt -
Der Hack in der .htaccess kann somit sicherlich auch nicht die Lösung sein.

Die Lösung ist logisch, wenn man das Problem verstanden hat:
Man muss dem Browser den Mime-typen einfach selbst mitteilen - z.B. aus der PHP-Datei heraus:

<script language="php">
    header("Content-Type: text/css");
</script> 

.....und das war es dann auch schon - man braucht nicht mehr und auch nicht weniger anstellen.
Aber man kann sich natürlich sich auch viel kompliziertere Erkärungen, Workarounds und noch sonsitge eigenartige Forenbeiträge anschauen...

Keine Kommentare:

Aktuelles