MilkCharts drucken
niki
- javascript
0 ChrisB0 Niki0 Der Martin
0 Niki
Hall zusammen!
Ich versuche für eine WebApp eine Druckmethode einzubauen, die es ermöglicht über ein Backend gefütterte MilkCharts zu drucken. Die einzige Möglichkeit um diese schön formatiert zu haben ist neben einem Java Applet (entgegen Kundenwunsch) Amazons Methode, einen formatierten Text im Popup öffnen, dort drucken und direkt wieder schließen. Leider funktioniert MilkCharts so, das es <table>s nimmt und diese in Canvas Objekte umwandelt. Deswegen müsste ich im Popup auch im domready Event die <table>s umwandeln und vorallem MooTools und MilkCharts einbinden. Rumexperimentieren und Suchen half mir nicht weiter, vielleicht wisst ihr, ob das überhaupt möglich ist oder ich direkt nach einer anderen Methode suchen soll.
Ich weiß, dass es bei JQuery eine Mthode .printElement gibt, bei MooTools suche ich diese vergebens.
Vielen Dank im Vorraus.
Frage im Kurzen: Kann man im Popupfenster Javascript Dateien im <head> einbinden? Oder gibt es eine ähnliche Funktion für Mootools wie jQuerys .printElement?
Niki
Hi,
Frage im Kurzen: Kann man im Popupfenster Javascript Dateien im <head> einbinden?
Warum sollte man nicht können?
Anders gefragt: Was glaubst du, unterscheidet ein „Popup“ von einem ganz normalen „Fenster“ oder Tab?
MfG ChrisB
Hi
Warum sollte man nicht können?
Ich bin einfach nicht drauf gekommen WIE man es macht. Mit write(), writeln() etc. wird es ignoriert, wenn ich eine schon vorgeschriebene Datei mit den richtigen Headern öffne ist alles da bloss ist der der <head> aufeinmal leer.
var w = window.open('charts.php', 'popup', 'width=15,height=15');
with(w.document) {
open();
write(curPrintHtml+'</body></html>');
}
in charts.php stehen die interessanten <head> Teile, Chroms DevTools zeign mir im DOM des Popups einen leeren <head></head> Bereich an. Was mache ich noch falsch, könnt ihr mir helfen?
LG niki
Hallo,
Mit write(), writeln() etc. wird es ignoriert, wenn ich eine schon vorgeschriebene Datei mit den richtigen Headern öffne ist alles da bloss ist der der <head> aufeinmal leer.
irgendwie versteh ich den Satz nicht. Die Worte schon, aber sie ergeben für mich keinen Sinn
var w = window.open('charts.php', 'popup', 'width=15,height=15');
with(w.document) {
open();
write(curPrintHtml+'</body></html>');
}
Und das auch nicht. Erst öffnest du ein neues Fenster und lädst charts.php hinein, nur um eben dieses Dokument dann sofort wieder zu entsorgen, indem du mit open() ein neues erzeugst.
Oder was hattest du eigentlich gemeint?
> in charts.php stehen die interessanten <head> Teile, ...
... die mit dem nachfolgenden open() wieder gelöscht und überschrieben werden.
Ciao,
Martin
--
Theorie ist, wenn jeder weiß, wie's geht, und es geht trotzdem nicht.
Praxis ist, wenn's geht, und keiner weiß warum.
Bei uns sind Theorie und Praxis vereint: Nichts geht, und keiner weiß warum.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
Hi,
irgendwie versteh ich den Satz nicht. Die Worte schon, aber sie ergeben für mich keinen Sinn
Ich dachte an 2 Methoden:
Ich kann nicht einfach die Charts in eine andere Datei auslagern, da diese nur auf dem Client gespeichert werden.
Methode 1 wäre ungefähr so:
var w = window.open('', 'popup', 'width=15,height=15');
with(w.document) {
write('<html><head><script src="script1.js"><\/script><script src="script2.js"><\/script><script type="text\/css"> <!-- Hier die MilkCHarts erstellen --><\/script><\/head><body><!-- Hier die Tabellen für die MilkCharts einbinden -->' + curPrintHtml + '</body></html>');
}
Das funktioniert nicht. Chromes DevTools zeigen mir im Objektbetrachter an, das der <head> Bereich leer ist. Keine Spur vom Javacript, die Tabellen werden aber angezeigt.
Methode 2 wäre so ähnlich, nur das ich den ganzen Kram der bei Methode 1 NICHT funktioniert (namentlich der <head> Bereich) in eine charts.php auslagere und diese Lade und anschließend den Tabellen dazuschreibe.
var w = window.open('charts.php', 'popup', 'width=15,height=15');
with(w.document) {
write(curPrintHtml + '</body></html>');
}
Das liefert mir exakt das gleiche Ergebnis wie Methode 1. Eine andere Methode fällt mir nicht ein, dazu kenne ich mich auch zu wenig damit aus, wie Javascript mit Popups umgeht.
Also zusammengefasst:
Ich möchte gerne über ein js-Script ein Popup erstellen, in den <head> Bereich Scriptdateien einbinden, Script selber schreiben und pures HTML in den <body> Bereich schreiben. Ist das Möglich? Und wenn ja, wie?
... die mit dem nachfolgenden open() wieder gelöscht und überschrieben werden.
Danke, den Fehler habe ich beseitigt.
LG, Niki