einem neu geöffneten Fenster ein anderes CSS zuweisen
Nina
- javascript
Hallöchen,
ich öffne von einer Seite aus per JS mit window.open() ein neues Browserfenster und übergebe die gleiche Seite.
Nun möchte ich dem Inhalt im neuen Fenster aber ein anderes Stylesheet verpassen und zwar ein Stylesheet welches für den Drucker optimiert ist. Das ganze soll so was wie ne Druckansicht werden.
Da ich ja Zugriff auf das Fenster habe müsste das doch mit DOM gehen, oder?
Dankeschön
Grüssle
Nina
Hi,
Da ich ja Zugriff auf das Fenster habe müsste das doch mit DOM gehen, oder?
ja. Du hast allerdings das Problem, dass Du schwerlich erfährst, wann das Dokument(!) im Fenster bereit ist. Das Fenster selbst ist uninteressant. Arbeite also besser z.B. mit serverseitigen Mechanismen, die das erwünschte CSS ermitteln und dem Client zurückübermitteln.
Cheatah
was meinst Du genau mit "bereit"?
Kann man da nicht mit dem "onLoad" event arbeiten?
z.B. im onLoad wird auf das parent-fenster (aufrufendes Fenster) zugegriffen und das neue Fenster holt sich eine Variable wo die Referenz für das neue CSS drinsteht.
danach muss man das nur noch per DOM irgendwie einfügen.
leider habe ich serverseitig nicht die Möglichkeit das zu machen;-(
Hi,
was meinst Du genau mit "bereit"?
das, was Du offenbar verstanden hast.
Kann man da nicht mit dem "onLoad" event arbeiten?
Ja, im Dokument im Popup, welches mit dem öffnenden Fenster kommunizieren muss.
z.B. im onLoad wird auf das parent-fenster (aufrufendes Fenster) zugegriffen und das neue Fenster holt sich eine Variable wo die Referenz für das neue CSS drinsteht.
danach muss man das nur noch per DOM irgendwie einfügen.
Wäre ein Weg. Achte darauf, dass es außerhalb des Popup-Kontextes keine Fehler gibt.
Cheatah
Hi Nina,
da du ja zweimal die gleiche Datei öffnest, brauchst du als allererstes mal ne Unterscheidung, ob die Datei grade im ursprünglichen Fenster liegt oder im Popup.
Schreib doch einfach mal rein (natürlich in den Skript-Bereich):
alert(opener);
oder:
alert(window.name);
oder du übergibst den Dateinamen an dein window.open() in folgender Form:
DATEINAME.html?druck
und machst mal folgende Abfragen:
if(window.location.href.indexOf('?')!=-1){alert(window.location.search);}
vielleicht helfen dir diese Anregungen ja etwas weiter.
gruß
ptr
Hallo Peter,
hat wunderbar geholfen. Danke.
Ich frage im Head ab ob window.name == 'PrintPreview' ist und wenn ja, soll ein anderes Stylesheet angezogen werden.
Das andere CSS schreibe ich dann über document.write in den <head> rein.
Dankeschön.
Gruss
Nina
Hi Nina
hat wunderbar geholfen. Danke.
Freut mich.
Ich frage im Head ab ob window.name == 'PrintPreview' ist und wenn ja, soll ein anderes Stylesheet angezogen werden.
Das andere CSS schreibe ich dann über document.write in den <head> rein.
Genauso hab ich mir das vorgestellt.
Dankeschön.
Bitteschön
gruß
ptr
Hallo Nina,
ich öffne von einer Seite aus per JS mit window.open() ein neues Browserfenster und übergebe die gleiche Seite.
Nun möchte ich dem Inhalt im neuen Fenster aber ein anderes Stylesheet verpassen und zwar ein Stylesheet welches für den Drucker optimiert ist. Das ganze soll so was wie ne Druckansicht werden.
Da ich ja Zugriff auf das Fenster habe müsste das doch mit DOM gehen, oder?
Warum einfach, wenn's auch kompliziert geht? ;-)
http://selfhtml.teamone.de/css/formate/einbinden.htm#link_media
Die neueren Browser sollten das alle schon können, genaueres werden dir aber sicher hier noch andere sagen können.
Gruß
Kurt
http://selfhtml.teamone.de/css/formate/einbinden.htm#link_media
hallo Kurt,
das kenne ich bereits und es wird auch verwendet. Allerdings möchte ich die Druckansicht (z.B. im IE6 Menü über Datei -> Druckansicht zu erreichen) nochmal im geöffneten Fenster anzeigen bevor der User es ausdruckt.
Hi,
das kenne ich bereits und es wird auch verwendet. Allerdings möchte ich die Druckansicht (z.B. im IE6 Menü über Datei -> Druckansicht zu erreichen) nochmal im geöffneten Fenster anzeigen bevor der User es ausdruckt.
wenn die CSS-Datei für den Druck tatsächlich schon vorliegt, könntest Du z.B. zunächst als letztes eine leere CSS-Datei für alle Medien verlinken und diese dann onload mit der CSS-Datei für den Druck austauschen. Such hierzu mal nach 'styleswitcher'.
freundliche Grüße
Ingo
meinst Du damit die Reihenfolge der referenzierten CSS Dateien oder die Leere Datei mit der für den Druck optimierten Datei austauschen.
ich muss aber immer noch im onload abfragen ob die gerade geladene seite in einem neuen fenster geladen wurde.
ausserdem würde beim onload zuerst das alte CSS und dann erst das neue geladen werden. d.h. der user sieht zuerst das media='screen' CSS und dann nach dem onload das druck CSS.