Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Druckansicht mit JavaScript
Frage
Hoffe das mir jemand helfen kann
Ich nutze JavaScript um aus einer HTML-Seite eine Druckansicht zu erstellen.
Dazu öffne ich über einen Link ein Popup, welches mit
<script language="javascript">document.write(window.opener.document.Originalseite.Textarea1.value)</script>
den Inhalt eines Textarea (und auch andere Elemente) ausliest und einschreibt.
Wenn nun aber im Textarea eingegeben ist:
1. Anfang
2. Mitte
3. Ende
wird dieser Text auf der neuen (Popup-)Seite so dargestellt:
1. Anfang 2. Mitte 3. Ende
Und das ist mein Problem. Wie kann ich erreichen das der Text im Popup genauso aussieht wie im Original ?
Danke
spaceman
Antwort 1 von rfb
wenn du in deinem JavaScript den textarea-Inhalt umwandelst mittels der
escape
-Funktion, erhältst du an jeder Zeilenumbruch-Stelle die Zeichenfolge %0D%0A
, das brauchst du bloß mittels einer einfachen Suchen/Ersetzen-Funktion gegen <br>
austauschen und dann alles mittels der unescape-
Funktion zurückverwandeln. Fertig.Antwort 2 von spaceman
Kannst du mir das mal ein klein wenig ausführlicher erklären? So bewandert bin ich noch nicht in JavaScript, das ich das so einfach verstehe. Danke!
Antwort 3 von rfb
sersetze dein Script durch dies:
<script type="text/javascript">
var p=escape(window.opener.document.Originalseite.Textarea1.value);
var a=p.split("%0D%0A");
p=a[0];
for (var j=1;ji<a.length;j++) {
p+="<br>"+a[j];
}
document.write(unescape(p));
</script>
Antwort 4 von rfb
hoppla, ein kleiner Fehler, richtig ist
...
...
...
for (var j=1;j<a.length;j++) {
...
Antwort 5 von rfb
hm, der Firefox machts wieder mal anders, aber wenn du statt "
%0D%0A
" nur "%0A
" einsetzt macht auch der mit.Antwort 6 von spaceman
Erst mal vielen Dank für die Hilfe.
Hatte gestern Abend mit Hilfe von einem JavaScript-Buch selber noch mal rumprobiert und folgendes geschrieben.
<script language="javascript">
var a = (escape(window.opener.document.Originalseite.Textarea.value))
var b = a.replace(/%0D0A/g,"<br>");
document.write(unescape(b))
</script>
So hat es bei mir auch funktioniert. Habe es aber auch nur mit dem IE getestet. Probiere jetzt gleich dein Script.
Hatte gestern Abend mit Hilfe von einem JavaScript-Buch selber noch mal rumprobiert und folgendes geschrieben.
<script language="javascript">
var a = (escape(window.opener.document.Originalseite.Textarea.value))
var b = a.replace(/%0D0A/g,"<br>");
document.write(unescape(b))
</script>
So hat es bei mir auch funktioniert. Habe es aber auch nur mit dem IE getestet. Probiere jetzt gleich dein Script.
Antwort 7 von rfb
Lass es bei deiner Version, die ist eleganter. Mein Vorschlag war auf Anfänger zum Nachvollziehen ausgerichtet.
Allerdings den Einwand von A5 solltest du noch berücksichtigen.
Und ersetze
Allerdings den Einwand von A5 solltest du noch berücksichtigen.
Und ersetze
language="JavaScript"
durch type="text/javascript"
, language ist im aktuellen HTML nicht mehr zulässig.