geloescht_JesterDay Geschrieben 4. Februar 2003 Geschrieben 4. Februar 2003 Hallo, gibt es eine Möglichkeit Javascript direkt aufzurufen, also ohne einen EventHandler wie onClick o.ä. Mein Problem: Ich erstelle mit PHP eine Tabelle und der Druck soll anders aussehen (Farben und Seitenumbruch...). Dazu hab ich einen Button "Printer friendly" (Name wird noch geändert), damit erzeuge ich die Tabelle nochmal und will sie dann gleich drucken (window.print()) und dann wieder zurück (self.location.href = ...). Weiss jemand wie ich es hinbekomme, das die Javascript funktionen einfach so ausgeführt werden? Oder reicht dazu der OnLoad Handler? Aber ich denke der würde doch ausgeführt, bevor der Rest angezeigt ist... Zitieren
oneside Geschrieben 4. Februar 2003 Geschrieben 4. Februar 2003 Eigentlich müsste auch die OnLoad variante funtionieren. Danach könntest Du ja mit <META HTTP-EQUIV="Refresh" CONTENT="5; URL=frame-noflash.html"> zurück auf deine Ausgangsseite weiterleiten. oder du baust einen Timer in deine OnLoad funktion ein, wenn die Zeit zum Drucken nicht ausreicht: timer=setTimeout("self.location.href='neuedatei.htm'", 5000); Hoffe, ich konnte helfen MFG - Oneside - Zitieren
geloescht_JesterDay Geschrieben 4. Februar 2003 Autor Geschrieben 4. Februar 2003 Ich finde das ist nicht gerade "sauber"... dann werd ich wohl lieber einen Button "Drucken" machen, oder aber übers Menü Drucken lassen... Zitieren
-TB-Lucky Geschrieben 4. Februar 2003 Geschrieben 4. Februar 2003 hmm was ist denn, wenn du das ganze in einem Fenster aufgehen lässt? Und in die neue Seite dann ein OnLoad einbaust? Das onLoad lässt du einen Funktion aufrufen. z.B. function drucken() { window.print(); window.close(); } Hmm ich sollte genauer lesen. Ich meine das onload wird erst ausgeführt, wenn die Seite komplett geladen ist oder? Zitieren
geloescht_JesterDay Geschrieben 4. Februar 2003 Autor Geschrieben 4. Februar 2003 OnLoad wird doch beim Laden gestartet, also u.U. noch bevor das Dokument fertig geladen ist, oder nicht? Da dafür die Daten neu aus der DB abgefragt werden müssen, könnte es passieren, das der Druck zu früh startet. Selbst wenn die Chance dafür nicht alzu gross sein mag, auf sowas lasse ich mich ungern ein... Zitieren
oneside Geschrieben 4. Februar 2003 Geschrieben 4. Februar 2003 Also, ich habe mich nochmal eingelesen: Der OnLoad Handler kann eine Funktion genau dann ausführen, wenn das Laden eines Dokuments abgeschlossen ist. Also kannst du Dir das ganze Timer-Zeug sparen und hast eine saubere Lösung MFG - Oneside - Zitieren
geloescht_JesterDay Geschrieben 5. Februar 2003 Autor Geschrieben 5. Februar 2003 Gut, danke. Das werd ich dann mal probieren... Zitieren
oneside Geschrieben 5. Februar 2003 Geschrieben 5. Februar 2003 Kannst ja dann vielleicht mal posten, ob es funktioniert hat. Würde mich auch mal interessieren MFG - Oneside - Zitieren
Rohde Geschrieben 6. Februar 2003 Geschrieben 6. Februar 2003 Laut SelfHTML wird onLoad ausgeführt, "wenn eine HTML-Datei geladen wird". Aber ich weiß gar nicht, wo das Problem ist. Setz doch einfach unter Deine Druckversion noch <script> window.print(); </script> PHP erzeugt dann die Druckversion und führt anschließend das JavaScript aus. Zitieren
jomama Geschrieben 6. Februar 2003 Geschrieben 6. Februar 2003 Das ist jetzt aber nicht das selbe. Wenn er die Anweisung einfach ins Script setzt, wird sie beim übertragen der Seite geladen, aber vor dem Übertragen der Bilder. Wenn er es nach dem Download machen will, muss schon eine Funktion im Onload her. Ist aber eigentlich eh schnurz, da der Browser das Dokument nur druckt, wenn es komplett ist. Zumindest war das bei mir beim IE immer so. Zitieren
Rohde Geschrieben 6. Februar 2003 Geschrieben 6. Februar 2003 Ich gehe davon aus, daß es auf jeder Seite die Möglichkeit gibt, einen Button anzuklicken, über den eine druckversion.php aufgerufen wird. Wenn man der Meinung ist, daß es sich lohnt, die Seite auszudrucken, sind die Bilder bereits übertragen. Und in der druckversion.php steht dann halt als letztes das Javascript drin. Apropos Javascript. Damit geht es übrigens auch (zumindest mit dem Internet Explorer): <html> <head> <script> function printversion() { a = document.all.inhalt.innerHTML; b = window.open('about:blank'); b.document.open(); // Hier kann man über b.document.write beispielsweise noch CSS einbinden b.document.write(a); b.document.close(); b.print(); b.close(); } </script> </head> <body> Das hier wird nicht gedruckt. <div id="inhalt"> Das hier wird gedruckt. </div> <a href="javascript:printversion();">Inhalt drucken</a> </body> </html> Zitieren
oneside Geschrieben 6. Februar 2003 Geschrieben 6. Februar 2003 Was hast Du denn für ein Self-HTML ? Laut Self-HTML 8.0 wird OnLoad erst ausgeführt, wenn das Dokument geladen WURDE! Hier nachzulesen: http://selfhtml.teamone.de/html/referenz/attribute.htm#body MFG - Oneside - Zitieren
Rohde Geschrieben 6. Februar 2003 Geschrieben 6. Februar 2003 Oh, da trifft SelfHTML 8.0 ja zwei verschiedene Aussagen zu ein und demselben Punkt: "wenn die Datei geladen ist..." und "wenn eine HTML-Datei geladen wird" Übrigens sollte das mit dem Smily im Code in meinem letzten Posting javascript:printversion() heißen, habe nur vergessen, diese verdammten Mistdinger abzuschalten. Zitieren
oneside Geschrieben 6. Februar 2003 Geschrieben 6. Februar 2003 Also ich habe auch noch im Buch 'javascript Praxisbuch' nachgelesen. Hier wird auch gesagt, dass die Funktion erst nach dem vollständigen Laden ausgeführt wird. MFG - Oneside - Zitieren
geloescht_JesterDay Geschrieben 6. Februar 2003 Autor Geschrieben 6. Februar 2003 Hallo, bevor ich hier nachgefragt habe habe ich es mit einem <script> window.Print(); </script> Probiert, es hat aber nicht funktioniert, daher ja dann die Frage. Also ich mache es jetzt mit dem OnLoad, in meiner SelfHTML Version (offline, und u.U. schon etwas älter...) hab ich auch nur "beim Laden einer Seite" gefunden. Das mit dem OnLoad funktioniert. Je nach verwendetem Browser wird die Seite erst angezeigt, dann wartet man ne weile, und dann kommt der Druck-Dialog (IE), oder man klickt auf "Drucken", dann kommt der Dialog, und am Ende sieht man kurz die Seite bevor der location.href wirkt (Mozilla, besser Phoenix). Der Druck funktioniert aber bei allen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.