Drucken mit Mozilla
Teclador
- css
0 Orlando0 Teclador0 Orlando0 Teclador0 Daniel Thoma0 Teclador
0 Orlando0 Teclador
0 Christian Seiler
0 Sönke
Hallo!
Habe hier ein Problem mit dem Mozilla: Wenn ich Seiten meiner Webseite, z.B. http://www.rv-schaag.de/news.shtml drucken will, druckt der mir Scrollbars (die man in der Druckvorschau auch noch bewegen kann!). Ich habe schon rausgefunden das Javascript alle Sytlesheets verändert (screen, print ...) und bekomme das im IE durch onbeforeprint in den Griff. Nur wie mache ich das für Mozilla? Bin für jeden Ansatz dankbar...
MfG
Teclador
Hi,
Habe hier ein Problem mit dem Mozilla: Wenn ich Seiten meiner Webseite, z.B. http://www.rv-schaag.de/news.shtml drucken will, druckt der mir Scrollbars (die man in der Druckvorschau auch noch bewegen kann!).
definiere ein Druck-Layout, das keine Scrollbars enthält. Javascript ist dafür nicht geeignet.
http://selfhtml.teamone.de/css/formate/einbinden.htm#media
LG Roland
definiere ein Druck-Layout, das keine Scrollbars enthält. Javascript ist dafür nicht geeignet.
ich habe via media=print ein eigenes Stylesheet für den Druck eingebunden. (und eins via media=screen für die Bildschirmanzeige) Dumm nur das der Javascript-Befehehl document.getElementById('layValue').style.overflow ="auto"; IN BEIDEN Stylesheets das ändert, also auch im Druck-Stylesheet
Hi,
ich habe via media=print ein eigenes Stylesheet für den Druck eingebunden. (und eins via media=screen für die Bildschirmanzeige)
sehr schön, funktioniert wie gewollt.
Dumm nur das der Javascript-Befehehl document.getElementById('layValue').style.overflow ="auto"; IN BEIDEN Stylesheets das ändert, also auch im Druck-Stylesheet
Wo verwendest du das denn? Auf der verlinkten Seite sehe ich es jedenfalls nicht. Ich kann mir nicht so recht vorstellen, dass Javascript in der Druckvorschau aktiv ist... hört sich jedenfalls sehr nach einem Bug an.
LG Roland
Wo verwendest du das denn? Auf der verlinkten Seite sehe ich es jedenfalls nicht. Ich kann mir nicht so recht vorstellen, dass Javascript in der Druckvorschau aktiv ist... hört sich jedenfalls sehr nach einem Bug an.
Der Code für dieses Layout selbst steht in der layout.cs:
SetAutoOverflow('layValue');
SetAutoOverflow ist eine Funktion aus der wons.cs und die erzeugt dann den Aufruf - habe ihn also gerade nur zusammengefasst.
Tatsächlich interpretiert der Javaskript beim Drucken. Wenn man Javascript ausschaltet funktioniert es (mal abgesehen was er dann mit den Bildern macht, das ist aber ein anderes Thema). Der IE macht gleiches, nur baue ich die Seite vor und nach dem Ausdruck um. onbeforeprint und onafterprint sind aber MS-eigene Dinger, die auch nur da gehen.
Eine Idee was ich machen kann? Wie ich nur das Stylesheet für screen ändern kann? *verzweifel*
Hallo,
Es gibt eine Möglichkeit, nur das Style Sheet für Druckelemente zu ändern.
Evt. musst Du anstatt des style-Attribut des Elementes direkt den CSS-Block ändern.
Schau dazu mal beim W3C in der Spezifikation der CSS-DOM nach.
Einen Link zur entsprechenden Stelle kann ich Dir leider auf die Schnelle nicht bieten.
Grüße
Daniel
Evt. musst Du anstatt des style-Attribut des Elementes direkt den CSS-Block ändern.
document.styleSheets[].item.rule() und dann irgendwas. Hat einer ein einfachen Beispiel? Ich werde aus der DOM nicht schlau und IDL auf Javascript ist umsetzen ist nicht meine Stärke...
Hi,
SetAutoOverflow ist eine Funktion aus der wons.cs und die erzeugt dann den Aufruf - habe ihn also gerade nur zusammengefasst.
habe ich gesehen, aber wozu eigentlich dieser Aufwand? Es reicht doch, den Kopfbereich mit position:fixed ruhigzustellen und den Bereich, dem du jetzt per DOM overflow zuweist oben mit einem Außenabstand zu versehen. Dass Opera 7 overflow:scroll beherrscht, ist dir bekannt? position:fixed ist ein besserer "Frame-Ersatz".
Tatsächlich interpretiert der Javaskript beim Drucken.
Das ist IMHO ein gewaltiger Bug, hilft dir nur nichts...
Wenn man Javascript ausschaltet funktioniert es (mal abgesehen was er dann mit den Bildern macht, das ist aber ein anderes Thema). Der IE macht gleiches, nur baue ich die Seite vor und nach dem Ausdruck um. onbeforeprint und onafterprint sind aber MS-eigene Dinger, die auch nur da gehen.
Eine Idee was ich machen kann? Wie ich nur das Stylesheet für screen ändern kann? *verzweifel*
Du könntest die Änderung von overflow an die Sichtbarkeit anderer DIVs binden, d.h. die Eigenschaft nur ändern, wenn der Kopfbereich sichtbar ist. Molily experimentiert im Moment mit etwas Ähnlichem, vielleicht siehst du dir mal [pref:t=31057&m=167742] ff. an. Wenn Mozilla im Drucklayout DOM verarbeitet, sollte das möglich sein.
LG Roland
Dass Opera 7 overflow:scroll beherrscht, ist dir bekannt?
Nein, bis gerade nicht.
position:fixed ist ein besserer "Frame-Ersatz".
Da der IE das nicht kann, scheidet es leider aus. Und gemessen habe ich >95% IE-Benutzer. Leider.
Du könntest die Änderung von overflow an die Sichtbarkeit anderer DIVs binden, d.h. die Eigenschaft nur ändern, wenn der Kopfbereich sichtbar ist. Molily experimentiert im Moment mit etwas Ähnlichem, vielleicht siehst du dir mal [pref:t=31057&m=167742] ff. an. Wenn Mozilla im Drucklayout DOM verarbeitet, sollte das möglich sein.
Wäre eine Idee. Nur scheint es so als würde er beim Drucken den aktuellen, durch JS veränderten Status verwenden. Kann ich irgendein Event abfangen wenn mein Style verändert wird?
Hallo Teclador,
Eine Idee was ich machen kann? Wie ich nur das Stylesheet für screen ändern kann? *verzweifel*
Nur mal so eine Schnapsidee: Du könntest in media="print" ja eine zusätzliche Klasse definieren wie z.B.
.scrolldivs { overflow: irgendwasaußerscroll !important; }
und dem <div> dann auch noch diese Klasse zuweisen. Wenn Deine JS-Funktion greift, könnte es sein, das diese dann am !important scheitert... (zu faul, es zu testen, daher keine Ahnung, ob es klappt)
Grüße,
Christian
Hallo Teclador!
ich habe via media=print ein eigenes Stylesheet für den Druck eingebunden. (und eins via media=screen für die Bildschirmanzeige) Dumm nur das der Javascript-Befehehl
document.getElementById('layValue').style.overflow ="auto"; IN BEIDEN Stylesheets das ändert, also auch im Druck-Stylesheet
Damit er beim Druck nicht auch das Overflow ändert mußt Du folgendes machen...
1. Definiere in Deinem "media=screen"-Stylesheet zwei verschiedene Klassen. Einmal eine mit der Eigenschaft overflow:auto; und ein mal mit der Eigenschaft overflow:visible;
Z.B. so:
.showoverflow {
overflow:visible;
}
.scrolloverflow {
overflow:auto;
}
2. In Deinem Javascript änderst Du jetzt für Dein "layValue" nicht mehr direkt das Style-Objekt sondern tauscht bei bedarf die ganze Klasse aus. Also...
document.getElementById('layValue').className = "scrolloverflow";
Oder wenn Du ihn später wieder zurück setzen willst dann hallt "showoverflow" als Wert.
Da Du die Klasse(n) so nur im "media=screen" Stylesheet definiert hast, wirkt es sich auch nicht auf die Druckausgabe aus wenn Du sie änderst.
Gruß,
Sönke