schnoedel: media:print in linestyles?

Beitrag lesen

"klappt nicht" ist keine Problembeschreibung. Was für Klassenzuweisungen gibt es eigentlich im Bereich von CSS?

Folgender Versuchsaufbau:

Eine html-Datei mit diesem Inhalt:

<div id="ziel">Ich geh hier nicht weg</div>

ein verlinktes .css-Stylesheet mit der Regel

.invis {display:none}

eine verlinkte .js-Datei mit diesem Inhalt:

  
function verschwinde() {  
var zieldiv = document.getElementById("ziel");  
zieldiv.setAttribute ("class","invis");  
alert(zieldiv.getAttribute("class"));  
}  
window.onload=verschwinde;  

Die Klasse "invis" soll also dynamisch an den div vergeben werden und alles mit der Klasse invis wird per der css-Regel ausgeblendet.

Der Alert bestätigt auch im IE, dass die Klasse richtig vergeben wurde (sofern ich grade keinen Schreibfehler eingebaut habe).

Im Firefox wird der div daraufhin unsichtbar, im IE nicht.

Wenn ich statt der Klasse aber einen inline-Style vergebe

zieldiv.style.display="none";

verschwindet der div auch im IE, weswegen ich das bisher einfach so gelöst habe. In diesem Fall soll sich aber auf dem Bildschirm nichts ändern sondern nur auf Ausdrucken. Das kann man in externen Styles mit media-Angaben wie

@media print{.invis {display:none;}}

erreichen. Und damit wären wir wieder bei meiner Ausgags-Frage: Kann man "media" irgendwie auch in inline-Styles benutzen? Und wenn ja, wie weist man das per javascript korrekt zu?