Jetzt mal wieder eine kleine Internet Explorer Bastelstunde. Mir ist gerade ein merkwürdiger Bug über den Weg gelaufen. Natürlich ganz in IE-Manier in Verbindung mit CSS. Der Bug tritt auf, wenn man ein zentrales Stylesheet per link-Tag einbindet, und in dem zentralen Stylesheet @import url(pfad); zum Einsatz kommt. Falls in dem link-Tag das media-Attribut mit dem Wert all steht (was zum Beispiel der E-Texteditor automatisiert vornimmt), kommt es unter dem IE 5 – 5.5 zu erheblichen Problemen. So wird beim Aufrufen einer Seite über das Adressfeld das Layout korrekt angezeigt. Wird aber ein interner Link geklickt, stellt sich das Layout nur noch zerstückelt dar, es scheint fast so, als ob der IE die einzelnen Stylesheets nicht ordentlich aus dem Cache holt. Ein Reload beseitigt die fehlerhafte Darstellung.
Die Fehlersuche hat mich einige Zeit gekostet, deswegen dieser Post. Denn mich hat eine ausgiebige Internetrecherche nicht ans Ziel geführt, sondern nur eine mühselige und relativ ineffiziente Ausschlußmethode :).
Mein Ausgangspunkt in der HTML-Datei:
<head>
<link rel="stylesheet" media="all" href="style.css">
</head>
Und im zentralen Stylesheet sah es so aus:
@import url(layout.css);
@import url(content.css);
@import url(print.css);
Mit diesem Code hatte ich mir die Probleme ins Haus geholt und es dauerte ein Weilchen, bis ich herausbekam, wo es hakt. media="all" ist nicht logisch, wenn im referenzierten Stylesheet (im unserem Fall style.css) mit @import url(); weitegearbeitet wird. Denn in den dort referenzierten CSS-Dateien wird der Code von einer Klammer umschlossen, welche einen Hinweis geben soll, für welches Ausgabemedium das Stylesheet bereitgestellt wird.
@media all {
CSS-Code
}
@media print {
CSS-Code für Druckausgabe
}
Also ist das Verwenden von media=”all” an dieser Stelle unnützt und birgt auch noch die besagten Probleme mit dem IE 5.X. Wer aber dennoch nicht darauf verzichten möchte, weil beispielsweise alte Netscapeversionen ausgeschlossen werden sollen, kann sich damit behelfen:
<style type="text/css" media="all" >
@import "style.css";
</style>
Über diesen Codeschnipsel stolpert der IE nicht. Wer sich jetzt noch fragt, wie ich denn zu diesem freudigen Erlebnis mit dem Internet Explorer kam, dem sei zur Vorsicht geraten, wenn er per Drag and Drop CSS-Dateien im E-Texteditor einbindet. Dieser ansonsten überaus geniale Editor fügt dem link-Tag dummerweise das media-Attribut hinzu.
August 15th, 2007 um 8:16 am
Ich glaube man sollte diesen antiquirten Browser vergessen. Ich kann mir nicht vorstellen, dass noch viele mit diesem Stück Geschichte unterwegs sind.
August 15th, 2007 um 10:41 am
ich kann ihn einfach nicht vergessen, vielleicht sollte ich mal ne Therapie machen!
Aber der Internet Explorer 5.5 hat auf manchen meiner Seiten noch Anteile von bis zu 1,49% . Und ich möchte einfach vermeiden, dass mich ein Kunde anruft, weil seine Mama mit einer IT aus dem vorherigen Jahrhundert nichts auf seiner Webseite lesen kann. Das ist immer so eine meiner Befürchtungen. Deswegen sollten alle meine Seiten zumindest rudimentär auch unter einem nicht aktualisierten Windows 2000 laufen.
August 23rd, 2007 um 12:58 am
Den IE 5/5.5 kann man vergessen Webdesigner die diese Browser noch unterstützen kann ich nicht verstehen.
1,49% das is ja nix, wieviel Zeit opferst du das Seiten von deinen Kunden auch im IE 5.5 vernünpftig aussehen?
Und muß der Kunde diesen aufwand auch Bezahlen? Vielleicht würde ich mal zu meinen Kunden sagen das sich der aufwand für diesen Browser nicht mehr Rechnet nicht für den Webdesigner und vor allem nicht für den Kunden.
Grüße Chris
August 23rd, 2007 um 9:40 am
@Chris: Der Kunde bezahlt prinzipiell natürlich für diesen Aufwand, da muss der Kunde aber vorher für sensibilisiert werden. Viele Webentwickler passen ihre Seiten ja nur noch auf ausdrückliche Anweisung ihrer Kunden an.
Aber 1,49% ist ja keine absolute Zahl, da kommt es auf den tatsächlichen Traffic an. So kommt es bei Ecommerce-projekten, die auf älteres Publikum abzielen unter Umständen auch zu höheren Anteilen des IE 5.5, wo sich wirklich die Frage stellt, ob sich es rechnet.
Freilich sind mir viele Probleme der IE’s schon länger bekannt, praktisch in Herz und Blut übergegangen. Also fange ich Darstellungsprobleme und Bugs oft schon im Vorfeld bei der Konzeption und Programmierung ab, ohne noch bewusst darüber nachzudenken, was ich da tue. Der Mehraufwand ist überschaubar geworden und nimmt der Regel nicht mehr als einen Tag in Anspruch. Ausnahmen gibt es leider immer wieder…