Sven Rautenberg: Wo gelten Javascript-Definitionen (IE ist doof...)

Beitrag lesen

Moin!

Zweiter Anlauf, nachdem ich eben noch einen Workaround versuchte... :)

Also: Ich habe eine Seite, auf der ich '@media screen' mehrere Layer übereinander positioniere und nacheinander zeige (zum Blättern per Mausklick). Dazu werden erst alle Layer per screen-CSS auf hidden gesetzt, und der erste Layer dann per Javascript angezeigt, wenn die Seite geladen ist.

Für den Druck gibts ein Extra-Stylesheet, welches alle Layer untereinander zeigt, so daß fortlaufender Text angezeigt wird - genau so, wie eine lange HTML-Seite auch aussehen würde (abzüglich ein paar Deko-Grafiken und Navigation, welches beim Drucken keinen Sinn macht. Außerdem ist die Schriftart größer ;) ). Das Print-CSS setzt dieselben Layer auf sichtbar.

Opera macht alles super: Die Screen-Darstellung zeigt jeweils nur einen Layer an, und die Druckdarstellung zeigt alle Layer untereinander an - egal, wohin ich geblättert habe.

Der IE 5 und 6 (vermutlich auch 5.5) verhält sich da unintelligenter.

Die Stylesheets für screen und print erkennt und verarbeitet er korrekt. Nur in einem einzigen Punkt schießt er über das Ziel hinaus: Er übernimmt den Status der Visibility, die ich auf der Screen-Darstellung per Javascript gesetzt habe, auch für den Druck. Das bedeutet: Im Druck wird für alle Layer Platz reserviert, aber nur der auf dem Bildschirm zuletzt angezeigte Layer wird auch tatsächlich angezeigt.

Frage: Wie kriege ich den IE davon überzeugt, daß er für die Druckdarstellung ausschließlich die Print-CSS benutzt und nicht noch die Styleänderungen von Javascript berücksichtigt?

Oder andere Frage: Wie kriege ich Javascript davon überzeugt, daß es nur die Styles für das Medium Screen ändert, nicht aber für das Medium Print. Denn wenn ich die Seite direkt lade und die IE6-Druckvorschau ansehe, dann hat noch kein Javascript einen Layer versteckt. Erst beim Blättern werden Layer per Javascript auf "hidden" gesetzt, was eben nicht nur auf screen wirkt, sondern auch auf print.

Grundsätzliche Frage: Muß der User-Agent beim Rendern von Seiten für verschiedene Medien, speziell Print, Javascript berücksichtigen? Opera scheint einfach unter Abschaltung von Javascript die Seite neu zu rendern (mit den richtigen CSS-Dateien). IE übernimmt einfach den status quo der Sichtbarkeiten. Wer hat Recht? Haben möglicherweise beide Recht, weil's vom W3C nicht definiert ist?

"Für sachdienliche Hinweise ist keine Belohnung in Höhe von 10.000 € ausgesetzt. Bitte wenden Sie sich nicht an die nächste Polizeidienstelle, sondern an das SelfHTML-Aufnahmestudio in Deutschland, in Österreich und in der Schweiz!" :)

- Sven Rautenberg