Netscape 4.79: Drucken nach document.write()
Susanne Schneider
- javascript
Hallo,
ich hoffe, ihr könnt mir bei folgendem Problem helfen:
Ich habe eine Ausgangseite mit einem Formular.
Nach Benutzereingaben in das Formular soll das Formular gedruckt werden.
Dazu wird eine weitere Seite geöffnet, in die die Formularwerte mit
<script language=javascript>document.write(this.opener.document.formular.nachname.value);</script>
hineingeschrieben werden ("formular" ist der Name des Formulars, "nachname" der eines Elements).
Soweit so gut, das funktioniert auch für die Anzeige der Druckseite, obwohl im Quelltext immer noch die Javascript-Anweisung stehenbleibt.
Jetzt soll diese Seite sofort nach dem Laden gedruckt werden, was mit onLoad="window.print()" im body-Tag aufgerufen wird.
Leider funktioniert dies nicht im besagten Netscape 4.79. Da kommt nur die Fehlermeldung: "this.opener has no properties".
Weitere Anmwerkungen:
Der Ablauf ist weit komplizierter als hier beschrieben, da die zweite (Druck-)Seite über einen Applicationserver erzeugt wird.
Ich habe es mit zwei sehr vereinfachten HTML-Seiten probiert, und da funktionierte auch das Drucken wie gewünscht, allerdings war da im Quelltext
der Druckseite auch schon keine Javascript-Anweisungen mehr sichtbar, die Werte waren schlicht in den HTML-Text eingebaut.
Mit dem IE und Netscape 7 gab es keine Probleme (weder noch).
Lange Rede kurzer Sinn: hat jemand eine Idee?
Susanne
hi,
Leider funktioniert dies nicht im besagten Netscape 4.79. Da kommt nur die Fehlermeldung: "this.opener has no properties".
teste mal die korrekte Referenzierung:
document.write (self.opener.document.formular.nachname.value);
die form steckt nicht im div-layer, oder?
bei mir klappst
Gruesse Joachim
--- 1 ---
<html>
<head>
<script language="javascript1.2">
function go () {
neu = open ("dpl.html","","width=300,height=300");
}
</script>
</head>
<body>
<form Name="feld">
<input type="text" name="ausg" size="30">
<input type="button" value="go" onclick="go()">
</form>
</body>
</html>
--- 2 ---
<html>
<head>
</head>
<body marginheight="0" marginwidth="0" onload="self.print()">
<script language="javascript1.2">
document.write (self.opener.document.feld.ausg.value);
</script>
</body>
</html>
hi,
Leider funktioniert dies nicht im besagten Netscape 4.79. Da kommt nur die Fehlermeldung: "this.opener has no properties".
teste mal die korrekte Referenzierung:
document.write (self.opener.document.formular.nachname.value);
die form steckt nicht im div-layer, oder?
bei mir klappst
Gruesse Joachim
--- 1 ---
<html>
<head>
<script language="javascript1.2">
function go () {
neu = open ("dpl.html","","width=300,height=300");
}
</script>
</head>
<body>
<form Name="feld">
<input type="text" name="ausg" size="30">
<input type="button" value="go" onclick="go()">
</form>
</body>
</html>
--- 2 ---
<html>
<head>
</head>
<body marginheight="0" marginwidth="0" onload="self.print()">
<script language="javascript1.2">
document.write (self.opener.document.feld.ausg.value);
</script>
</body>
</html>
Hallo Joachim,
vielen Dank für Deine Mühe, sogar einen Beispiel-Code, toll!
Dein Beispiel funktioniert bei mir local auch, leider macht das für die eigentliche Seite keinen Unterschied.
Die Werte werden auch in der nicht-druckbaren Version korrekt referenziert (btw simple HTML, kein divs, layers oder sonstiger Schnickschnack), aber es scheint einen Unterschied zu machen,
ob man so etwas lokal (file-Protokoll) oder über WebServer (http) macht. Was ich jedenfalls festgestellt habe, auch in
Deinem Beispiel-Code sind die Werte auf der Druck-Seite wirklich im html-Quelltext fest drin bei lokalem Test, wohingegen über http die Javascript-Verweise noch im Quelltext der Druckseite stehen bleiben. Warum auch immer.
Ich (genauer gesagt mein Kollege ;-) versuchen es jetzt anders herum: die Druckseite vollständig von der Formularseite aus generieren, so daß im Druckfenster reiner HTML-Text ohne Javascript-Verweise steht.
Hoffentlich klappt das.
Nochmals Danke,
Susanne
hi,
Die Werte werden auch in der nicht-druckbaren Version korrekt referenziert (btw simple HTML, kein divs, layers oder sonstiger Schnickschnack), aber es scheint einen Unterschied zu machen,
ob man so etwas lokal (file-Protokoll) oder über WebServer (http) macht.
hmm, also mein test funktioniert online ebenso (jetzt allerdings am NC 4.5/ Mac getested): http://www.wendenburg.de/test/formInput.html
Du solltest erst mal feststellen, wo genau der Fehler herkommt. Ist's ein Referenzierungsproblem oder was anderes. Was genau sagt die Konsole?
Was ich jedenfalls festgestellt habe, auch in
Deinem Beispiel-Code sind die Werte auf der Druck-Seite wirklich im html-Quelltext fest drin
Das ist eine Spezialitaet von NC 4x, spielt aber eigentlich keine Rolle. Andere Browser stellen per js geschriebenen Quellcode grundsaetzlich nicht dar.
Ich (genauer gesagt mein Kollege ;-) versuchen es jetzt anders herum: die Druckseite vollständig von der Formularseite aus generieren, so daß im Druckfenster reiner HTML-Text ohne Javascript-Verweise steht.
Hoffentlich klappt das.
Natuerlich. Eventuell braucht es eine Zeitverzoegerung, denn man kann nicht in ein Fenster schreiben, dass noch nicht vollstaendig aufgebaut ist...
Gruesse Joachim
hi,
Die Werte werden auch in der nicht-druckbaren Version korrekt referenziert (btw simple HTML, kein divs, layers oder sonstiger Schnickschnack), aber es scheint einen Unterschied zu machen,
ob man so etwas lokal (file-Protokoll) oder über WebServer (http) macht.
hmm, also mein test funktioniert online ebenso (jetzt allerdings am NC 4.5/ Mac getested): http://www.wendenburg.de/test/formInput.html
Du solltest erst mal feststellen, wo genau der Fehler herkommt. Ist's ein Referenzierungsproblem oder was anderes. Was genau sagt die Konsole?
Was ich jedenfalls festgestellt habe, auch in
Deinem Beispiel-Code sind die Werte auf der Druck-Seite wirklich im html-Quelltext fest drin
Das ist eine Spezialitaet von NC 4x, spielt aber eigentlich keine Rolle. Andere Browser stellen per js geschriebenen Quellcode grundsaetzlich nicht dar.
Ich (genauer gesagt mein Kollege ;-) versuchen es jetzt anders herum: die Druckseite vollständig von der Formularseite aus generieren, so daß im Druckfenster reiner HTML-Text ohne Javascript-Verweise steht.
Hoffentlich klappt das.
Natuerlich. Eventuell braucht es eine Zeitverzoegerung, denn man kann nicht in ein Fenster schreiben, dass noch nicht vollstaendig aufgebaut ist...
Gruesse Joachim
Hallo Joachim,
ich hab Deinen Link getestet, was für ein Service!
Du hast völlig recht, es funktioniert auch bei mir, der Fehler scheint also von unserem Applicationserver zu kommen.
Und wie gesagt, probieren wir es jetzt andersherum, da kann ich leider noch nicht sagen ob es funktioniert, das ist noch in Arbeit(die zu druckende Seite ist etwas kompliziert).
Nochmal vielen Dank,
Susanne