Druckprobleme mit self.print() und window.open
romy
- javascript
Hi,
ich hätte da nochmal eine Bitte.
ich versuche aus einer Hauptseite den Content auszulesen und in ein Popup zu verfrachten und dieses Popup hat dann noch einen Button , wo drucken draufsteht und natürlich die normalen Browserfunktionen.
Der Content wird natürlich noch etwas angepasst, sonst könnte man ja gleich die Hauptseite drucken.
Nun zum Problem:
meine Funktion, die das Popup öffnet sieht so aus:
function printwindow(adress) {
var F = window.open(adress,"Drucken","width=570,height=650,scrollbars=yes,menubar=yes,status=yes");
var content = document.getElementById("maincontent").innerHTML;
F.document.getElementById("content").innerHTML = content;
F.focus();
}
in der Vraiable adress steht die Zieladresse, dass ist die print.php, in welcher folgender Code steht
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body class="bodycolor">
<table>
<tr>
<td id="content" colspan="2">
</td>
</tr>
<tr>
<td>
<a class="anzeigen" href="javascript:self.print()">
<img class="anzeigen" src="images/druck.gif" width="16" height="14">
</a>
</td>
<td>
<a class="anzeigen" href="javascript:self.close()">
Fenster schliessen
</a>
</td>
</tr>
</table>
</body>
</html>
Drücke ich jetzt auf Drucken öffnet sich das Popup, aber manchmal kommt der Fehler, ElementById sei kein Objekt und zwar an der Stelle, wo ich den Content zuweise. Für mich bedeutet das, dass er wohl den Inhalt der print.php nicht vollständig geladen hat zu dem Zeitpunkt und sich die Spalte mit der id=content noch nicht in ihr befindet.
Wie gesagt der Fehler tritt nur manchmal auf, es lässt sich leider nicht reproduzieren warum.
Umgehe ich diese Problematik und generiere in der Funktion printwindow den Code, wird das self.print() nicht ausgeführt (d.h. es passiert nichts beim Klick), das self.close schon.
Habt ihr vielleicht einen Vorschlag wie ich das lösen könnte, mir fällt dazu nichts mehr ein.
vielen Dank
ciao
romy
Hi Romy,
tritt das Problem auch auf, wenn Du Dich mit window statt self auf Dein Fenster beziehst?
Ich hatte neulich ein Ähnliches Problem mit print():
Anders als bei Dir hatte ich in ein document mit document.write() geschrieben. Erst nachdem ich das document mit document.close() explizit geschlossen hatte, wurde der Druckaufruf ausgeführt.
Ich könnte mir vorstellen, das hier eine Ähnliche Kollision vorliegt.
Gruss
Marcus
Hi Markus,
tritt das Problem auch auf, wenn Du Dich mit window statt self auf Dein Fenster beziehst?
ja, meine ersten Einstellungen bezogen sich auf window.print() und hatte es dann mit self.pritn() versucht
Ich hatte neulich ein Ähnliches Problem mit print():
Anders als bei Dir hatte ich in ein document mit document.write() geschrieben. Erst nachdem ich das document mit document.close() explizit geschlossen hatte, wurde der Druckaufruf ausgeführt.
Ich könnte mir vorstellen, das hier eine Ähnliche Kollision vorliegt.
Das klingt ja nach meinem 2. Problem, ich habe ja uch die Variante versucht, mit document.write den Content der um den Inhalt liegt in per JS in die Seite zu schreiben, aber wie gesagt, da geht der printknopf nicht.
Ich konnte aber nicht nachvollziehen, das nach dem schliessen der Druckauftrag ausgeführt wird, werde es aber mal probieren.
Wie hast Du Dein Problem denn behoben?
ciao
romy
Wie hast Du Dein Problem denn behoben?
Supereinfach mal das gemacht, was sich eigentlich gehört, aber zu 99,8% aller Fälle beim document.write() missachtet wird:
document.open();
document.write();
document.close();
window.print();
...denn nur ein geschlossenes document macht aus dem window aussenrum ein druckbares window...;)
Viel Erfolg
Marcus
Hi,
Supereinfach mal das gemacht, was sich eigentlich gehört, aber zu 99,8% aller Fälle beim document.write() missachtet wird:
document.open();
document.write();
document.close();
That's it, danke echt, da wäre ich natürlich nicht draufgekommen. Jetzt ist alles klar.
Nochmals vielen vielen Dank
ciao
romy