Javascript beim Drucken der Seite ausführen

8

Beim Drucken einer Seite scheint der JavaScript-Code ausgeführt worden zu sein.
Wie kann ich feststellen, ob die Seite gerade gedruckt wird? Ich js-resizing, und muss etwas anders drucken.

    
Gerhard Presser 04.10.2011, 07:38
quelle

2 Antworten

9

Sie können nicht, außer für IE-Browser. Kein anderer Browser hat ein vorheriges Druckereignis. Sie können jedoch festlegen, dass ein bestimmtes Stylesheet nur während des Druckens angewendet wird:

%Vor%

Dieses Stylesheet wird vor dem Drucken angewendet. Auf diese Weise können Sie einige erstaunliche Änderungen vornehmen, z. B. das Ausblenden wichtiger Abschnitte, das Verschieben von Elementen und das Ausführen von Nur-Druck-Formatierungen, z. B. Seitenumbrüche.

Eine weitere Option besteht darin, dem Benutzer eine Schaltfläche "Diese Seite drucken" bereitzustellen. Diese Schaltfläche kann JavaScript verarbeiten, window.print() aufrufen und die Änderungen rückgängig machen:

%Vor%

Die Methode window.print() blockiert immer (in jedem Browser, den ich getestet habe), so dass die Änderungen sofort wieder rückgängig gemacht werden können. Wenn der Benutzer jedoch über das Menü oder die Symbolleiste drucken möchte, haben Sie kein Glück.

Eine Art, wie ich diesen Fall in einer komplexen Web-App gehandhabt habe, war ein Druck-Stylesheet, das alles außer einem speziellen DIV verbarg. Wenn der Benutzer auf Drucken klickt, erhalten sie eine Warnmeldung. Wenn sie auf die Druckschaltfläche geklickt haben, würde dieses div mit den richtigen Informationen gefüllt werden. Es ist nicht großartig, aber zumindest haben sie nicht mehrere Seiten Müll bekommen.

    
OverZealous 04.10.2011, 08:04
quelle
3

AFAIK gibt es keine allgemeine Möglichkeit. IE hat onbeforeprint und onafterprint, die jetzt auch zu Firefox 5/6 + hinzugefügt werden (ich weiß es nicht sicher). Verwenden Sie print spezifische Stylesheets

%Vor%

Andere relevante Fragen

Jan Pfeifer 04.10.2011 08:02
quelle