Neues Fenster Stylesheet ändern

hallo Leute,

Ich will folgendes erreichen:
Druckansicht:

  • Neues Fenster
  • Anderes CSS Layout

Das neue Fenster erzeuge ich im mom. über folgenden Code:

var fenster;

function neues()
{
fenster = window.open (
„“,
„NeuesFenster“,
+„toolbar=0“
+",location=0"
+",directories=0"
+",status=0"
+",menubar=0"
+",scrollbars=1"
+",resizable=0"
+",width=800"
+",height=600"
);

fenster.moveTo(200,200);

fenster.location.href = „vision.html“;//Dateiname und Pfad der Datei, die angezeigt werden soll
}

Dieses Script wird ausgeführt, sobald ich auf den Text „Druckansicht“ klicke. Siehe Druckansicht
Dieses Script funktioniert auch bestens und er lädt mir das komplette Inhalt in einem neuen Fenster.

Nun will ich jedoch in dem neu erzeugten Fenster mittels document.getElementById(„layout“).href=„print.css“; das StyleSheet ändern. Jedoch, wenn ich dies direkt in die Function neues() rein schreibe, erkennt er natürlich das document… nicht. Schade…Dachte das wäre so einfach.

Wenn ich das document… ausserhalb der Function neues() setze, nimmt er gleich zu beginn das Stylesheet print.css für die ganze Oberfläche.

Wie gehe ich da vor, dass er mir das Stylesheet in dem neu erzeugten Fenster ändert. Sprich auf print.css.

Wäre euch sehr dankbar, wenn ihr mir helfen würdet.

grüße,
sebastian

Hallo Sebastian,
warum bindest du nicht deine stylesheets einfach mit einer media information ein:

so wird das default.css für alles verwendet hier kannst du algemeines anlegen.
in screen kommen modifikationen die du nur für den bildschirm willst.
und in print kommen modifikationen für den ausdruck.

so kannst du dir den ganzen aufwand mit dem extra fenster sparen. testen kannst du dein print stylesheet in der druckvorschau des browsers. oder wenn du die möglichkeit hast als pdf drucken. (man muss ja nicht unnötig papier verschwenden)

wenn du es wirklich per javascript machen willst würde ich einfach
das print fenster mit einer variablen aufrufen z.B
vision.html?print=true

dann kann dein javascript in die seite eingebettet sein und einfach überprüfen ob es den string „print=true“ in der url vorkommt.

besser währe natürlich eine serverseitige einbindung z.B per php (das läuft dann wirklich überall:

php:

<?php if ($_GET['print']==true){
echo '';
}
?>

wenn dein server php kann must du den php code einfach in den header setzten. (dort wo das print stylesheet aufgerufen werden soll)

und natürlich die datei endung in .php ändern.

gruss chris
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Christian.

Nach diesem Prinzip habe ich es auch als erstes gemacht, und hat bestens geklappt.

jetzt wollte ich aber dies mittels eines neuen fensters machen, damit auch die benutzer sehen, was überhaupt ausgedruckt wird (ohne die Druckansicht des Browsers zu verwenden), deshalb hab ich mich für diesen weg entschieden. leider muss im browser natürlich javascript aktiviert sein.

ich glaub ich entscheid mich mal für den weg über php…

<?php : if ($_GET['print']==true){
echo 'media="print"\>'; } ?\>

werde es heute abend ausprobieren und hoffe es klappt.

grüße,
sebastian